Tho*_*rus 5 ember.js ember-data
更新
演示:http://jsbin.com/ogorab/311/edit
我正在尝试构建一个简单的聊天室,使用Faye/Websockets实时更新.消息是使用常规REST发布的,但也有通过Faye订阅/ messages/created,store.pushPayload用于推送新消息.
现在发生以下情况,我可以看到它出错的地方,但我不知道如何解决它:
ChatController处理提交,createRecord使用聊天消息调用,然后#savecreateRecord).请注意,id还没有分配.这会导致重复的消息,按以下顺序:
createRecord,将通过ajax响应解决]pushPayload/ Faye 插入的消息]我希望你能理解到目前为止.解决方案是让Faye在推送有效负载之前等待保存调用解析.不幸的是,我没有对正在保存的记录的引用(发生在控制器中,faye订阅已设置ApplicationRouter).
另外我希望这能以通用的方式工作:)
终于找到了解决方案,但仍然欢迎其他建议。
结果Store#didSaveRecord保存记录后更新了 id。通过重写此方法(然后按顺序调用 super),我们可以首先检查该 id 的记录是否已存在:
App.Store = DS.Store.extend
didSaveRecord: (record, data) ->
# This will remove any existing records with the same id
@getById(record.constructor, data.id)?.unloadRecord()
@_super(record, data)
Run Code Online (Sandbox Code Playgroud)