使用MongooseJS推入嵌套的subdoc数组

时间:2016-09-18 22:09:11

标签: mongoose

我在MongooseJS中有以下架构:

const ParentChildCommentSchema = new mongoose.Schema({
  date: Date,
  from: { type:mongoose.Schema.Types.ObjectId, ref:'Parent' },
  message: String,
});

const ParentChildSchema = new mongoose.Schema({
  child: { type:mongoose.Schema.Types.ObjectId, ref:'Child' },
  comments: [ ParentChildCommentSchema ],
});

const ParentSchema = new mongoose.Schema({
  name: String,
  description: String,
  children: [ ParentChildSchema ],
});

Parents具有Children的位置,并且每个父/子关系可以包含comments数组。

我正在尝试使用

推送comment
const query = {
  "_id": parentId,
  "children._id": parentChildId,
};

const update = {
  "$push": { 
    "children.$.comments": { 
      "date": Date.now(),
      "from": parentId,
      "message": message,
    }
  }
};

Pack.findOneAndUpdate(query, update, err => ...)

查询不会抛出任何错误。但没有添加任何评论。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

原来问题在于路由器 - 没有传递ParentChild id - 所以上面的代码是正确的并且正常工作。