猫鼬模型名称作为变量

时间:2019-03-01 13:54:58

标签: node.js mongoose

是否有一种通过变量模型名称创建集合的方法?我尝试过:

printf

但是它返回“ TypeError:group1.create不是函数”。

谢谢

2 个答案:

答案 0 :(得分:1)

您可能想使用Mongoose模型而不是其名称。您可以使用mongoose.model(group1)检索模型,并可以使用create

假设您已经使用各自的模式创建了模型,则可以执行以下操作:

    var group1 = req.body.post.group;
    var groupModel = mongoose.model(group1);

    groupModel.create(req.body.post, function(err, newSunnah){
        if(err){
            console.log(err);
        } else {
            res.redirect("/view");
        }
    });

答案 1 :(得分:0)

查看有关models的Mongoose ODM文档。 group1不仅仅是集合或模型名称,它是一个实际的模型,负责从底层MongoDB数据库创建和读取文档。所以,就像

var Model = mongoose.model('Model', <-YOUR-SCHEAMA->);
Model.create({}, function(error, doc) {
  ....
});

因此,可能的方法是将模型存储在数组中,然后动态地传递数组名称。

var models = [];
models['Sunnah'] = mongoose.model('Sunnah', <-YOUR-SCHEAMA->);
models['XYZ'] = mongoose.model('XYZ', <-YOUR-SCHEAMA->);

app.post("/post", function(req, res){
  ...
  models[group1].create(req.body.post, function(err, newSunnah){
    ....
  });
  ...
});