Javascript Mongojs更新动态生成器$set

Javascript Mongojs更新动态生成器$set,javascript,node.js,socket.io,mongojs,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 + "\", "; }

我正在尝试动态生成$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) {

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

尝试传递
数据
对象本身,而不是它的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}, ...);

我不知道为什么我一开始没有尝试这个。谢谢。