在我正在处理的项目的会话系统中,我在这样的记录上调用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);
response
是POST
请求返回/ session的JSON有效负载,其中的示例如下所示:
{
"sessionToken":"f7a7247467b08818ead27441838df30fed0e0a79",
"user": {
"id":"5499bf5b7f25680761c9df7a",
"email":"test@gmail.com",
"accounts": [/* [account ids] */],
"syncPaths":[/* [sync path ids] */]
}
}
有没有办法避免这个错误?
更新:
为了回应查看更多代码的请求,here是包含unloadRecord
调用的文件,here是包含store.push
调用的文件。< / p>
更新2 :
我按要求包含了一个POST请求返回给/ session的JSON有效负载的示例。以下是user
的模型:
DS.Model.extend({
email: DS.attr("string"),
accounts: DS.hasMany("account"),
syncPaths: DS.hasMany("syncPaths")
});
答案 0 :(得分:3)
尽管有unloadAll()
,但我一直在努力寻找类似的东西。
其他人建议这样做,所以也许它会帮助你。
在源代码中ember.js
或ember.debug.js
如果在本地运行,请找到以下行:
Ember['default'].assert('calling set on destroyed object', !obj.isDestroyed);
并将其更改为:
Ember['default'].assert("calling set ('" + keyName + "') on destroyed object", !obj.isDestroyed);
然后您会看到正在设置的属性,它可能会帮助您找到代码中挂起的位置。对我来说,keyName
只是&#34;长度&#34;这不是很有帮助。