MongoDB:根据不同的JSON POST数据更新用户数据

时间:2015-09-29 20:56:50

标签: json node.js mongodb

使用MEAN环境(包括用于数据库访问的mongoose)我将不同的JSON数据从Web表单(用户配置文件输入表单)发送到我的服务器。在那里,我想根据发送到我服务器的数据更新用户的文档。我的问题:由于一些用户相关的信息是可选的,我以发送到我的服务器的各种JSON对象结束,例如。

User.update({ _id: userid}, {name: json.name, email: json.email}) ->for case 1

User.update({ _id: userid}, {name: json.name, email: json.email, hasdog: true}) ->for case 3

在服务器端,我最终检查每个可能的JSON结构,然后使用适当的mongoose指令最终更新用户的文档,如:

coefplot.lm

正如您所看到的,这导致我有点丑陋和冗余的代码。我希望有一些关于如何避免这种情况的建筑建议。

1 个答案:

答案 0 :(得分:1)

您可以通过从请求中提取有效(列入白名单)字段来以编程方式构建update对象:

var request = {name: 'fooman', email: 'foo@man.com', hasdog: true, password: 'hack'};
var whitelist = ['name', 'email', 'address', 'hasdog', 'location'];
var update = {};

// Add the whitelisted fields in the request to the update object.
for (var ix in whitelist) {
    var field = whitelist[ix];
    if (request.hasOwnProperty(field)) {
        update[field] = request[field];
    }
}
User.update({ _id: userid }, update);