我已经创建了模型,并可以通过手动列出对象来保存对象数组,但是这在生产中将无法正常工作,因为我的数组并不总是相同大小。
下面是我的代码示例。在stackRank字段下保存对象数组时遇到的问题。
如果任何人有任何建议都是很好的选择,那就可以挽救生命!
猫鼬模型
const MySchema = mongoose.Schema({
userId: {type: mongoose.Schema.Types.ObjectId, ref: 'User', require: true},
startDate: {type: Date, require: true},
endDate: {type: Date, require: false},
length: {type: Number, require: true},
inProgress: {type: Boolean, require: true, default: true},
stackRank:[{
appUsers: {type: mongoose.Schema.Types.ObjectId, ref: 'Users', require: true}
}]
});
在Express中保存代码
const mySchema = new MySchema({
userId: req.body.userId,
startDate: today,
length: req.body.startLength,
stackRank: [ //TODO this is the part I need to change
{appUsers: Array[0]},
{appUsers: Array[1]},
{appUsers: Array[2]}
]
});
instantComp.save()
.then((result) => {
console.log('result from save', result)
})
.catch(err => console.log('error promise all', err))
所需功能
我希望能够一次保存整个数组,而不是为嵌套在stackRank中的字段appUsers单独保存数组的每个值,因为它的长度并不总是3。它的长度几乎总是变化的,因此尽管我编写的代码适用于这种大小的数组,但实际上对我来说无法正常工作。
答案 0 :(得分:3)
您可以尝试对当前代码进行此修改
let stackRank = [];
for(let elem of array) //array is your array variable, i suppose
stackRank.push({appUsers: elem});
mySchema.stackRank = stackRank;