我将 Nodejs 与 Sequelizejs 一起使用,但我想这个问题可能适用于其他情况。
一个对象进入我的方法,它有一些属性试图更新我从数据库中提取的模型(如果我找到匹配)。
var changes = {
firstName: "foo",
loginPin: 0000
}
该模型包含更多属性,但为了便于讨论,这里仅举一个示例。
var existingEmployeeModel = {
firstName: "bar",
middleInitial: "f",
loginPin: 1111,
email: "foo@bar.com"
}
所以现在我基本上是这样处理的:
if (changes.firstName) existingEmployeeModel.firstName = changes.firstName;
有一个更好的方法吗?有时我可能会使用
.trim()
等,但我无法想象这是理想的。
最佳答案
例如, lodash apply
http://lodash.com/docs#assign 函数做了类似的事情。只需按如下方式调用它:
_.assign(existingEmployeeModel, changes);
它应该将
changes
中的所有属性复制到模型中。如果你不想添加依赖,你可以使用这个:
function apply(model, changes) {
Object.keys(changes).forEach(function (key) {
if ('string' === typeof changes[key]) {
model[key] = changes[key].trim();
} else {
model[key] = changes[key];
}
});
}
完毕。
关于database - NodeJS 中模型的可选更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297010/