【发布时间】:2021-03-20 01:33:53
【问题描述】:
我有一个这样定义的架构
var PersonelModelSchema = new Schema({
emailAddress: String,
fullName: String
});
var ModuleModelSchema = new Schema({
modName: String,
personels:[PersonelModelSchema ]
});
var ModulesModelSchema=new Schema({
modules: [ModuleModelSchema ]
});
var ModulesModel = mongoose.model('ModulesModel ', ModulesModelSchema );
此架构用于将另一个应用程序发送的数据保存到基于 nodejs 构建的 api 端点
json 数据包含一个数组,我想将其内容保存为单独的文档 - 即该数组有 2 个对象,每个对象都需要保存为单独的文档。这就是我使用数组 if ModuleModelSchema 的原因,以便我可以获取数组中的所有对象。
发布的数据是这样的
{"modfulldata" :[{
"modName": "example-45435q5",
personels: [
{
"emailAddress": "name@example",
"fullName": "name"
},
{
"emailAddress": "name2@example",
"fullName": "name2"
}
]
},
{
"modName": "example-f45b",
personels: [
{
"emailAddress": "name3@example",
"fullName": "name3"
},
{
"emailAddress": "name4@example",
"fullName": "name4"
}
]
}
]}
这是我用来保存的代码
app.post('/savemd',
function(req,res){
console.log(req.body.modfulldata);// the data is shown correctly here
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true });
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
console.log("open");
});
var newmods=new ModulesModel (req.body.modfulldata);
ModulesModel.insertMany(newmods).then(function(){
db.close();
});
});
没有抛出任何错误。使用 console.log 语句,我可以看到请求 json 数据被正确读取。 但是在mongodb中,保存的文档中只有一个空数组
我做错了什么?
如何正确保存数据?
【问题讨论】:
-
可能,它在某种程度上与
_id字段(以及它的生成)相关,用于在数组中嵌入文档。 Mongoose 不会返回错误,因为文档已成功保存。此外,如果您将来尝试工作和update the array field via.save()method,您可能会发现这个关于我的 ar 的答案很有用。