【发布时间】:2015-02-21 23:37:11
【问题描述】:
Mean.io 在用户包中带有一个内置的用户模型。如果我想向它附加额外的数据,扩展该用户模型的最佳做法是什么?
我使用 Django 的经验让我创建了一个“配置文件”,它有一个指向它所属的用户对象的外键。我喜欢这种方法,因为我不会那样接触用户包。但这是最佳实践吗?如果是这样,我如何确保在创建用户文档时创建个人资料文档?如果不是,是什么?
【问题讨论】:
Mean.io 在用户包中带有一个内置的用户模型。如果我想向它附加额外的数据,扩展该用户模型的最佳做法是什么?
我使用 Django 的经验让我创建了一个“配置文件”,它有一个指向它所属的用户对象的外键。我喜欢这种方法,因为我不会那样接触用户包。但这是最佳实践吗?如果是这样,我如何确保在创建用户文档时创建个人资料文档?如果不是,是什么?
【问题讨论】:
我不确定 qm69 的解决方案是否是未来与 mean 兼容的最佳解决方案。在 mean.io 文档http://learn.mean.io/ 中,它指出开发人员不应更改任何核心包,包括用户包。
mean.io 模式是将所有扩展实现为自定义包。并使用 $viewPathProvider.override 方法覆盖默认视图。
其次,用户包从根本上说是一种安全/身份验证功能,而不是定期接收更新的配置文件实现。更改此设置很可能会破坏未来的修复并有引入安全漏洞的风险。
我的建议是使用方法包系统实现配置文件并为用户服务添加服务依赖项。我在以前的项目中做过这个,效果很好。
要实现配置文件包,请按照以下步骤操作:
1) 使用平均包配置文件创建一个名为 profile 的自定义包。
2) 为自定义包中的所有配置文件要求实施模型/视图/控制。不要更改用户包中的任何内容。
2) 使用依赖注入来包含全局服务服务。这将使您能够访问 Global.user 数据,因此您很可能甚至不需要使用用户服务。
3) 使用上述文档中提到的 $override 方法覆盖任何用户视图。
希望这会有所帮助;)
【讨论】: