我尝试动态生成$ 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) {
出于某种原因,这不起作用。知道为什么吗?
答案 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}, ...);