使用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
正如您所看到的,这导致我有点丑陋和冗余的代码。我希望有一些关于如何避免这种情况的建筑建议。
答案 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);