Mongojs更新动态生成器$ set

时间:2014-06-25 15:29:48

标签: javascript node.js socket.io mongojs

我尝试动态生成$ set值以更新数据库中的用户帐户详细信息。我使用的是mongojs。这是代码的一部分。

var updateData = '';
    if(data.avatar_url) {
        updateData += "avatar_url: \"" + data.avatar_url + "\", ";
    }
    if(data.bio) {
        updateData += "bio: \"" + data.bio + "\", ";
    }
    if(data.chat_background) {
        updateData += "chat_background: \""+ data.chat_background + "\"";
    }
    updateData = "{ " + updateData + " }";
    console.log(updateData);
    db.users.update({ username: socket.username }, {$set: updateData}, function (err, updated) {

出于某种原因,这不起作用。知道为什么吗?

1 个答案:

答案 0 :(得分:0)

尝试传递data对象本身,而不是它的JSON表示:

db.users.update({ username: socket.username }, {$set: data}, ...);

修改

如果data对象包含一些额外的属性,并且您不希望将它们插入到数据库中,则可以尝试此解决方案:

var updateData = {
    avatar_url:      data.avatar_url,
    bio:             data.bio,
    chat_background: data.chat_background
};
db.users.update({ username: socket.username }, {$set: updateData}, ...);