我在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 => ...)
查询不会抛出任何错误。但没有添加任何评论。我究竟做错了什么?
答案 0 :(得分:1)
原来问题在于路由器 - 没有传递ParentChild id - 所以上面的代码是正确的并且正常工作。