javascript-调用unloadRecord后,Ember.js“在被破坏的对象上调用集”错误
作者:互联网
在我正在处理的项目的会话系统中,我在像这样的记录上调用unloadRecord:
user.unloadRecord();
我不打电话给destroyRecord,因为我想从存储中手动卸载记录而不将其持久化到服务器上.以这种方式从存储中删除记录的效果很好,但是当我登录到同一帐户时(需要从服务器加载相同的用户记录,并使用store.push手动将其插入存储中时),出现以下错误信息:
Uncaught Error: Assertion Failed: calling set on destroyed object ember.js:3902
同样,这在调用user.unloadRecord()之后在以下行发生:
var user = this.store.push("user", response.user);
响应是POST请求返回给/ session的JSON有效负载,此处显示了一个示例:
{
"sessionToken":"f7a7247467b08818ead27441838df30fed0e0a79",
"user": {
"id":"5499bf5b7f25680761c9df7a",
"email":"test@gmail.com",
"accounts": [/* [account ids] */],
"syncPaths":[/* [sync path ids] */]
}
}
有什么办法可以避免这个错误?
更新:
为了响应查看更多代码的请求,here是包含unloadRecord调用的文件,而here是包含store.push调用的文件.
更新2:
我提供了一个示例,该示例由POST请求返回给/ session所请求的JSON有效负载.这是用户模型:
DS.Model.extend({
email: DS.attr("string"),
accounts: DS.hasMany("account"),
syncPaths: DS.hasMany("syncPaths")
});
解决方法:
我一直在努力寻找类似的东西,尽管使用了unloadAll().
有人建议这样做,所以也许会对您有所帮助.
在源代码中,ember.js或ember.debug.js(如果在本地运行)找到以下行:
Ember [‘default’].assert(‘被破坏对象的调用集’,!obj.isDestroyed);
并将其更改为:
Ember [‘default’].assert(“正在销毁对象上的调用集(‘”“ keyName”’)“,!obj.isDestroyed);
然后,您将看到已设置的属性,它可以帮助您跟踪代码在哪里挂起.对我来说,keyName只是“ length”,并不是很有用.
标签:ember-js,ember-data,javascript 来源: https://codeday.me/bug/20191120/2047438.html