Ember.js 余烬数据在哪里';s委员会的详细资料';是否创建/更新/删除订单集?

Ember.js 余烬数据在哪里';s委员会的详细资料';是否创建/更新/删除订单集?,ember.js,ember-data,Ember.js,Ember Data,余烬数据的适配器将编辑的记录保存在不同的Ember.OrderedSets组中,即:,和 来自模型控制器的createRecord()的model.save()将被放置在commitDetails.created组中model.save()来自模型控制器的acceptChanges将放置在commitDetails.updated组中。但我在代码中找不到位置关联发生的地方 我知道它们是commit(它调用适配器的,反过来调用适配器的)。在整个过程中,我无法确定根据创建/更新/删除的标准对记录进行

余烬数据的适配器将编辑的记录保存在不同的
Ember.OrderedSets
组中,即:,和

来自模型控制器的
createRecord()
model.save()
将被放置在
commitDetails.created
组中
model.save()
来自模型控制器的
acceptChanges
将放置在
commitDetails.updated
组中。但我在代码中找不到位置关联发生的地方


我知道它们是commit(它调用适配器的,反过来调用适配器的)。在整个过程中,我无法确定根据创建/更新/删除的标准对记录进行排序的确切位置。

我不太清楚您在问什么,但如果您要查找记录添加到相应的
提交详细信息集的位置,我相信这就是您要查找的行,在
commitDetails
属性本身中

这是相关代码

forEach(records, function(record) {
  if(!get(record, 'isDirty')) return;
  record.send('willCommit');
  var adapter = store.adapterForType(record.constructor);
  commitDetails.get(adapter)[get(record, 'dirtyType')].add(record);
});
让我们走过去

forEach(records, function(record) {
  if(!get(record, 'isDirty')) return;
如上所述,对于事务中的每条记录,如果它不是脏的,则忽略它

record.send('willCommit');
否则,将其状态更新为飞行中

var adapter = store.adapterForType(record.constructor);
获取记录的适配器

commitDetails.get(adapter)
查找适配器创建/更新/删除的trio对象,该对象在该方法顶部实例化。它只是一个对象,具有创建、更新和删除的3个属性,其值为空OrderedSet

[get(record, 'dirtyType')]
从刚获得的对象中获取适当的OrderedSet。例如,如果我们所在的记录已更新,
get(记录'dirtyType')
将返回字符串
updated
。括号只是标准的JavaScript属性查找,因此它在上一步中从trio对象获取更新的OrderedSet

.add(record);
最后,将记录添加到OrderedSet。在循环的后续迭代中,我们将添加相同类型的其他记录,以便将所有创建的记录添加到一个集合,将所有更新的记录添加到另一个集合,并将所有删除的记录添加到第三个集合

在整个方法的末尾,我们从属性返回的是一个映射,其键是适配器,其值是创建、更新和删除了3个属性的对象。依次,其中每一个都是事务中所有记录的OrderedSet,这些记录分别为该适配器创建、更新和删除


请注意,此计算属性被标记为
volatile
,因此每当有人获得
commitDetails
属性时,它都会被重新计算。

谢谢您的回答。我仍然不清楚这一点:“查找适配器创建/更新/删除的trio对象……获取适当的OrderedSet。例如,如果我们的记录已更新,这将获取更新的OrderedSet。”更新的记录放在更新的OrderedSet中的何处?谢谢,但我仍然不清楚例如,如果我们所在的记录已更新,get(record,'dirtyType')将返回更新的字符串。括号只是标准的JavaScript属性查找,因此它在上一步中从trio对象获取更新的OrderedSet。“我无法在源代码中找到将记录设置为
更新
删除
创建
的位置。谢谢。@HaoQiLi这是模范州的一部分。退房,然后。每一条记录都记录着它所处的状态,并且有一个完整的分层状态机来帮助实现这一点。非常感谢Jonathan Tran!享受赏金吧D