模式:
let projectSchema = new Schema({
filters: [
{
name: { type: String, required: true},
items: {
q: { type: Number, required: true}
}
}
],
});
更新功能:
const project = await mongoose.model('project').findById(id).exec();
console.log(filter); // { name: 'abc', items: [ { q: 3}]
project.filters.push(filter);
console.log(project.filters); // { _id: "123", name: 'abc' } // items array is missing
await project.save();
当我通过猫鼬获取文档,然后将项目添加到该文档的数组时,仅包含第一个属性。
那是为什么?
我不建议使用$ push,因为在使用$ push时不会尊重猫鼬(验证等)的好处。
答案 0 :(得分:1)
项目字段是一个对象,而不是数组。更改架构:
let projectSchema = new Schema({
filters: [
{
name: { type: String, required: true},
items: [ // square brackets here
q: { type: Number, required: true}
]
}
],
})