如何使用mongoose在MongoDB文档中添加数组?

时间:2016-03-28 21:06:03

标签: node.js mongodb

我在mongodb中收集了一系列法术书。我在expressmongoose中的一个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。

0 个答案:

没有答案