更新mongodB集合中的数组

时间:2013-07-31 13:15:27

标签: node.js mongodb curl express

使用node / express构建API。我在使用mongoDB更新集合中的数组时遇到问题。我只想在集合用户的useritems数组中添加引用id。

用户看起来像这样:

[
    {
        fbname: "name.name",
        email: "name.name@hotmail.com",
        username: "mr.name",
        useritems: [ObjectId("51e101df2914931e7f000003"), ObjectId("51e101df2914931e7f000005"), ObjectId("51cd42ba9007d30000000001")]
    }];

在我的server.js中:

var express = require('express'),
    item = require('./routes/items');

var app = express();

app.configure(function () {
    app.use(express.logger('dev'));    
    app.use(express.bodyParser());
});

app.put('/users/:userId/item/:itemId/add', item.addUserItem); 

查询:

exports.addUserItem = function(req, res) {
    var user = req.params.userId; 
    var item = req.params.itemId; 
    console.log('Updating useritem for user: ' + user);
    console.log("item: ", item);

    db.collection('users', function(err, collection) {

        collection.update({'_id':new BSON.ObjectID(user)}, {$addToSet: { useritems: item}}); 

    });
}

当我尝试卷曲时没有任何反应,我得到错误:(52)来自服务器的空回复,来自卷曲

卷曲:

curl -i -X PUT -H 'Content-Type: applicatio/json' http://127.0.0.1:3000/users/51e6a1116074a10c9c000007/item/51e6a1116074a10c9c000006/add

1 个答案:

答案 0 :(得分:0)

试试这个:

collection.update({'_id':new BSON.ObjectID(user)}, {$addToSet: { useritems: item}}, true, function(err, result){
    res.json(200, result);
});