我有一个我想要更新的对象数组,因此需要多次更新。我正在寻找实现这一目标的最佳方法。每个对象包含相同的属性,但每个对象的属性具有不同的值。
我是否实施了类似的内容?
var people = [
{'firstName': 'Brian', 'clockedIn': '2016-4-12', 'type': 'developer'},
{'firstName': 'Taylor', 'clockedIn': '2016-4-14', 'type': 'developer'},
{'firstName': 'Jake', 'clockedIn': '2016-4-14', 'type': 'manager'}
];
PersonModel.update({'type': 'developer'}, people, function(err, records) {
// ...
// ...
});
如果我执行类似前面的代码,它到底做了什么?它会自动尝试匹配people数组中每条记录的主键,更新列出的任何属性,然后将更新的记录传递给回调函数吗?
我注意到在Sails.js文档here中,更新函数的第二个参数可以是一个对象或一个数组,我只是不清楚我是否可以像这样使用它。文件不清楚。
如果我不能像这样使用它并且我想尝试迭代或递归方法,你会建议我实现它吗?
答案 0 :(得分:1)
你的适配器是什么?
我必须使用MySQL,我进行查询my self,然后调用PersonModel.query(myQuery)
我按照this answer进行制作(带两个字段的示例):
state_file
输出:
values = [
{
id: 1,
param_1: 'NewValueParam1',
param_2: 'NewValueParam2'
},
{
id: 2,
param_1: 'AnotherNewValueParam1',
param_2: 'AnotherNewValueParam2'
}
];
function multiValuesUpdate(values) {
var request = "UPDATE MyTable SET ";
var part_param_1 = "`param_1` = (CASE `id` ";
var part_param_2 = "`param_2` = (CASE `id` ";
var part_ids = "WHERE `id` IN (";
_.forEach(values, function (v) {
part_param_1 += "WHEN '" + v.id + "' THEN '" + v.param_1 + "' ";
part_param_2 += "WHEN '" + v.id + "' THEN '" + v.param_2 + "' ";
part_ids += v.id + ",";
});
part_param_1 += "ELSE `param_1` END), "; // Be careful with the comma !
part_param_2 += "ELSE `param_2` END) ";
part_ids = part_ids.slice(0, -1) + ");"; // Remove the last "," and add ");"
request += part_param_1 + part_param_2 + part_ids;
return request;
}
console.log(multiValuesUpdate(values));