我有一个调查表格,看起来像这样:
{
id: Id,
date: Date,
clients: [{
client_id: Id,
contacts: [{
contact_id: Id,
score: Number,
feedback: String,
email: String
}]
}]
}
我需要更新特定联系人下的“score”和“feedback”字段。目前,我是这样运行更新操作的:
function saveScore(obj){
var dfd = q.defer();
var survey = surveys.get(obj.survey_id);
survey
.pluck({ clients: 'contacts' })
.run()
.then(results => {
results.clients.forEach((item, outerIndex) => {
item.contacts.forEach((item, index, array) => {
if(Number(item.contact_id) === Number(obj.contact_id)) {
array[index].score = obj.score;
console.log(outerIndex, index);
}
});
});
return survey.update(results).run()
})
.then(results => dfd.resolve(results))
.catch(err => dfd.resolve(err));
return dfd.promise;
};
当我看到update方法时,它指定了如何更新嵌套的键值对。然而,我找不到任何更新数组中单个项的示例。有没有更好且更清晰的方法来更新嵌套数组中的项?
{ name: 'jorge' }
匹配的数组对象都被过滤掉,然后更新后的{ name: 'jorge'}
对象被追加到数组末尾。 - tim-montague