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(名称、模式)
时创建模型。当您仅使用名称调用它时,它将检索具有该名称()的模型。关于是否将其存储在数组或对象中,代码将以两种方式工作,但我认为如果使用对象,它更可读。