我在mongodb中收集了一系列法术书。我在express
到mongoose
中的一个API调用是PUT,其中用户提供文档的ID,然后是包含一系列法术的正文。我想用从客户端引入的数组更新法术书文档中的法术数组。
这是文档的样子:
{
"_id": {
"$oid": "56f999342c2bdee43869c33b"
},
"name": "malagar22",
"username": "zak",
"spells": [
"56bd4da932c3b8e88e3c113a",
"56bd4da932c3b8e88e3c113b"
],
"__v": 0
}
这是我的API调用的样子:
app.put('/api/spellbook/:id', function (req, res) {
Spellbook.findById(req.params.id, function(err,spellbook) {
if (err) {
res.json({info:'error during find spellbook',error:err});
};
if (spellbook) {
_.merge(spellbook, req.body);
spellbook.save(function(err) {
if (err) {
res.json({info:'error updating spellbook',error:err});
};
res.json({info:'spellbook updated successfully'});
});
} else {
res.json({info:'spell not found'});
}
})
});
如您所见,我找到了与该ID匹配的法术书。然后我与请求体进行了一次lodash合并,我想这将与文档中的法术数组和体内的法术数组相匹配,我将在下面发布。然后我们更新。
这是我的要求:
{
"spells":[
"56bd4daa32c3b8e88e3c1148"
]
}
我获得了成功回调,但是当我检查数据库时,文档没有得到更新。对不起,如果这很简单。我是MS SQL的人,这是我第一次使用Express和Mongo。