Node.js Mongoose模型名称作为变量

Node.js Mongoose模型名称作为变量,node.js,mongoose,Node.js,Mongoose,有没有办法通过变量模型名创建集合?我试过这个: app.post("/post", function(req, res){ if(req.body.post.group =="Sunnah") { var group1 = req.body.post.group; group1.create(req.body.post, function(err, newSunnah){ if(err){ console.log(err);

有没有办法通过变量模型名创建集合?我试过这个:

app.post("/post", function(req, res){
if(req.body.post.group =="Sunnah") {
    var group1 = req.body.post.group;
    group1.create(req.body.post, function(err, newSunnah){
        if(err){
            console.log(err);
        } else {
            res.redirect("/view");
        }
    });
} if(req.body.post.group !=="Sunnah") {
    res.send("Not available");
}
});
但它返回“TypeError:group1.create不是函数”


谢谢

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

var Model = mongoose.model('Model', <-YOUR-SCHEAMA->);
Model.create({}, function(error, doc) {
  ....
});
var模型=mongoose.Model('Model',);
Model.create({},函数(错误,文档){
....
});
所以,可能的方法是将模型存储在数组中,并动态传递数组名

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){
    ....
  });
  ...
});
var模型=[];
模型['Sunnah']=mongoose.model('Sunnah',);
模型['XYZ']=mongoose.model('XYZ',);
app.post(“/post”),功能(请求、回复){
...
模型[group1]。创建(req.body.post,函数(err,newSunnah){
....
});
...
});

您可能想使用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");
        }
    });


您可能想使用Mongoose模型,而不是它的名称。您可以使用
mongoose.model(group1)
检索模型,并使用
create
。无需在数组中跟踪模型,因为
mongoose.model(modelName)
起作用。另外,您的
模型
变量不应该是一个对象吗?它可以工作,但是在数组中设置属性而不是索引是很奇怪的。使用
mongoose.model(modelName)
将在每次请求时创建一个模型。而且索引也不会在应用程序开始时的开头设置。将模型存储在
变量中和
数组/对象中会有所不同?Mongoose仅在调用
Mongoose.model(名称、模式)
时创建模型。当您仅使用名称调用它时,它将检索具有该名称()的模型。关于是否将其存储在数组或对象中,代码将以两种方式工作,但我认为如果使用对象,它更可读。