我有以下架构:
var ItemSchema = new Schema({
name: String,
completed: Boolean,
priority: String,
dueDate: String
});
var ListSchema = new Schema({
name: String,
items: [ItemSchema]
});
我想要了解ItemSchema
的实例。我可以嵌套两个Mongoose方法来实现它,如下所示:
router.route('/lists/:list_id/items/:items_id')
.put(function(req, res) {
List.findById(req.params.list_id, function(err, list) {
if (err) {
res.send(err);
}
list.items.findByIdAndRemove(req.params.items_id, function(err, item) {
if (err) {
res.send(err);
}
console.log(item);
res.json(list);
});`
答案 0 :(得分:0)
我使用.findById
找到了一个更简单的问题解决方案,然后使用特殊的id
方法通过_id
查找文档。这并不能回答您是否可以嵌套Mongoose方法,但仍然是访问其父级中的子文档的解决方案。
Mongoose Sub Document Documentation
以下是解决方案:
router.route('/lists/:list_id/items/:items_id')
.put(function(req, res) {
List.findById(req.params.list_id, function(err, list) {
if (err) {
res.send(err);
}
var item = list.items.id(req.params.items_id);
item.completed = true;
list.save(function (err, result) {
if (err) {
res.send(err);
}
res.json(result);
})
})
})