node.js - 针对不同类型用户的MongoDB数据库设计

标签 node.js mongodb restify

我正在为一个有多种类型用户的网站制作一个 RESTful API。

  • 管理员
  • 供应商(公司名称、地址)
  • 常规用户(姓名、电话)

用户将始终是他们最初注册的用户(永久特化)。

我正在使用 Mongoose 和 NodeJS,并且我为用户提出了以下模型,以便我将来可以轻松管理新社交网站的登录。

{
  userType: { type: String, lowercase: true },
  contact: {
    email: { type: String, lowercase: true, index: { unique: true, sparse: true } }
  },
  accounts: {
    local: { password: String },
    facebook: { id: String, token: String }
  }
}

所以我的问题是,由于我有不同类型的用户,并且每种类型都有不同的个人资料信息,我应该在哪里存储有关每个用户的信息?

为每种类型制作不同的模型并在User模型中添加引用键?或者有更好的办法吗?

最佳答案

我认为将这些信息放入不同的集合中不是一个好主意。 MongoDB 的优势之一是您可以将所有相关的用户信息放在一个文档中,这样您就可以通过 1 个查询来检索它。

我会向用户模型添加 3 个字段:

adminInfo: { ... },
vendorInfo: { ... },
userInfo: { ... },

并根据用户类型填写正确的内容。其他 2 个字段可以为 null(甚至根本不存在)。

不要走标准化路线 - 这里不需要。

关于node.js - 针对不同类型用户的MongoDB数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577921/

相关文章:

node.js - MongoDB 查找和展开未给出正确结果

mongodb 查找嵌套对象

node.js - 使用 Restify 进行版本控制的最佳文件夹结构

javascript - Node.js 表搜索因使用中的 Promise 失败

javascript - Node.js puppeteer - 在循环中使用数组中的值来循环浏览页面

json - 使用 JSON/HTTP/REST 接口(interface)查询 MongoDB

node.js - Node.js 上 MongoDB 连接的最佳实践是什么?

node.js - 在 Node.js 中组织路由

javascript - 如何在 Mongoose 上为数组中的每个项目运行函数或单独写入数组对象

node.js - Restify 的 CORS 问题