我想保存一个通过REST接口通过mongoose到mongodb的ObjectId数组。当我将REST接口中的objectIds保存到DB时,我经常遇到一个转换错误的问题。服务器端代码用打字稿编写。
该架构为:
var WaSchema = new mongoose.Schema({
ownerId: { type: 'String', required: true },
options: { type: 'String', required: false },
launch: [{ type : 'ObjectId', required: true }],
});
从REST接口中,我获得了“字符串”字符串数组: launch: Array<string>
这是我目前进行保存的方式:
WaModel.findOneAndUpdate(query, {
ownerId: userId,
options: wa.options,
launch: wa.launch
},
{ upsert: true },
(err, doc) => {
if (err) throw err
else return 'successfully saved/updated';
})
REST接口中的ObjectId如何看起来必须正确转换?只是像“ 575e52790c0fc76a11e381d0”这样的字符串,还是需要像ObjectId(“ 575e52790c0fc76a11e381d0”)这样的前缀?
数组最后看起来如何?这取决于#1的答案
我看到了填充功能,这对您有帮助吗?
1)如果您使用猫鼬,则无需添加前缀ObjectId。您可以将其保存为参考ID的数组。
var insertData = {
ownerId: userId,
options: wa.options,
launch: [ '56cea954d82cd11004ee67b5','56ceaa00d82cd11004ee67bc' ]
}
2)最后,您的数组将如下所示。
"launch" : [
ObjectId("56cea954d82cd11004ee67b5"),
ObjectId("56ceaa00d82cd11004ee67bc")
],
3)是的,在这里填充功能将很有帮助。它将填充整个数组。填充后看起来像
"launch" : [
{ _id: '56cea954d82cd11004ee67b5',
.... other fields
},
{ _id: '56ceaa00d82cd11004ee67bc',
.... other fields
},
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句