将项目推送到数组,仅包含第一个属性。猫鼬

时间:2019-02-27 13:54:46

标签: mongodb mongoose

模式:

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时不会尊重猫鼬(验证等)的好处。

1 个答案:

答案 0 :(得分:1)

项目字段是一个对象,而不是数组。更改架构:

let projectSchema = new Schema({
  filters: [
    {
      name: { type: String, required: true},
      items: [ // square brackets here
        q: { type: Number, required: true}
      ]
    }
  ],
})