【问题标题】:Storing profile details of an user [closed]存储用户的个人资料详细信息[关闭]
【发布时间】:2013-06-29 01:03:22
【问题描述】:

我希望将用户的个人资料详细信息存储在我的应用中,例如他们的出生日期、国家/地区、名字、姓氏、他们加入的日期、他们的 profile_pic 的位置等。 我在 Expressjs 应用程序中使用猫鼬。我还将存储用户名和哈希密码,以及他们是否已从他们的电子邮件地址激活。我有几个问题很困惑,不知道该怎么办?

  • 我是否应该将所有用户存储在一个 mongoose 模型中,如果用户已从其电子邮件链接激活,是否应该有一个激活到 c 的列,或者我是否应该有两个不同的表,一旦用户激活我就移动他从未激活的表到激活的表。

  • 第二件事是想知道我应该将配置文件的详细信息存储为同一模型中的列,还是使用人口为配置文件详细信息创建另一个模型。我在想这是因为这些细节有我需要查询的任何东西。它们基本上只是用于读写。我不使用这些参数进行查询。所以我想把它们放在不同的模型中会更好,因为我总是只查询用户名或密码。我认为可能的另一种选择是将它们放在子文档中。

  • 我还将存储我的应用程序的用户首选项,并且我的问题与上述相同。

请帮助我选择什么选项。我已经读了很多书,但目前还不确定。请帮助我了解标准的做法以及更好的做法

谢谢

【问题讨论】:

  • 为什么不试一试,看看它对您的应用程序是如何工作的? MongoDB 中没有表。它们被称为集合。没有列。它们被称为字段。

标签: node.js mongodb express mongoose


【解决方案1】:

是的,将所有用户存储在一个带有activated 字段的猫鼬模型中。这样可以简化一些可能的数据库查询,例如获取所有用户(激活或未激活)的列表或检查用户名是否已被使用。

您还应该将配置文件的详细信息作为字段存储在同一模型中。如果您不使用这些参数进行查询,请不要将它们编入索引。在我看来,将它们作为子文档并没有那么有用,而且只有当您计划为每个用户提供一组个人资料详细信息(多个)时才有意义。

【讨论】:

  • 感谢您的意见。
  • 你认为我不应该把这个配置文件数据传给另一个模型吗?
  • 从不同模型获取此配置文件数据的问题在于,您需要保持集合之间的完整性——例如,如果用户被删除,您将需要删除个人资料数据条目也是如此。
猜你喜欢
  • 2018-10-16
  • 2011-01-13
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多