如果我有一组模型,然后在我的代码中,我会这样做:
collection[0].set({name: "Joe"});
collection[1].set({username: "abcd"});
collection[10].set({name: "bob"});
有没有办法可以对所有模型进行.save()
,但只更新已更改的字段和模型?好像该集合包含1000多个模型,第一次执行fetch
已经占用了大量系统资源,为1000多个模型执行.save()
将占用更多...
答案 0 :(得分:1)
相反,如果您只想将更改的属性发送到服务器,请调用model.save(attrs,{patch:true})。
不是对属性执行set()
然后保存,而是调用model.save并传递一组attr
答案 1 :(得分:0)
您可以迭代整个集合,使用hasChanged()
检查模型是否已更改,并发送PATCH
(或使用Sync
进行更改)更改请求。您可以使用changedAttributes
伪代码:
collection.each(function(model){
if(model.hasChanged())
model.save(attrs, {patch: true});
//---------------^ could be a single attribute, changes attributes or whatever
});
旁注:你不应该一次拥有1000个模型......然而,有分页,延迟加载等技术