【问题标题】:Mongoose : Dynamically load different schema under one collectionMongoose:在一个集合下动态加载不同的模式
【发布时间】:2016-12-03 11:07:06
【问题描述】:

我正在使用 nodejs 并且有一个注册页面,其中有一个选择标签可以在客户和员工之间进行选择。

我想要 1 个模型和 2 个架构: -用户:将包含公共道具,例如:邮件、姓名、密码... -EmployeeSchemma 与员工的特定文件 -ClientSchema 为客户端提供特定字段。

这就是我想在我的服务器端实现的目标:

var User=require("models/user");

router.post("/register",function(req,res){
var newUser=new User();

if(req.body.type=="client")
   //  make the newUser use the ClientSchema //

if(req.body.type=="employee")
  //   the newUser instance will use the EmployeeSchema //
});

请问我怎样才能达到这样的结果(?) 请注意,我只想使用一个模型,它可以根据表单中的用户选择对客户和员工用户进行建模。

【问题讨论】:

  • 谢谢你的回答,但这不是我要找的,我想要的是使用一个数据结构对象:类似这样的东西:var generic=require('/models/dynamicModel' );然后这个对象可以设置客户字段(如果它是客户)或员工字段(如果它是员工)

标签: javascript node.js mongodb mongoose database-schema


【解决方案1】:

如果你想要一个“动态模型”,我想你正在寻找setting strict to false in mongoose

您知道,默认情况下,Mongoose 将遵循您设置的架构/模型,设置 strict: false 将允许您保存不在您的架构/模型中的字段。

因此,对于您的情况,在您的文件模型/用户中,您需要在创建架构时将“strict: false”作为第二个参数:

var userSchema = new Schema({
    email: String,
    name: String,
    password: String
    // other parts of your user schema
}, {strict: false})

您现在应该能够在同一个集合中相应地设置客户和员工字段。

【讨论】:

    猜你喜欢
    • 2012-10-31
    • 2021-01-25
    • 1970-01-01
    • 2015-03-22
    • 2012-11-20
    • 2020-11-11
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多