首页 > 解决方案 > 查找使用“createRecord”创建且 ID 值为空的 Ember-Data 行?

问题描述

我在 Ember 3.8 项目中使用以下模式...

情况

当用户导航到路线时,路线定义中foo/add的函数用于在数据存储中生成空记录。modelcreateRecordfoo

foo/add 模板使用一个Component实现表单来输入foo详细信息的模板。反过来,表单使用 ember-power-select 的实例,在表单中定义了 onchange 处理程序fooComponent

一旦显示表格,用户就可以自由使用电源选择。

onchange电源选择的处理程序触发时,我想更新最初由createRecord.

问题

我可以向 foo/add 发送一个操作,Controller但是如何Controller在 Data Store 中找到该行?因为该行还没有被插入到服务器上,所以它没有最终将与之关联的 ID,所以 id 值实际上是 null。

备择方案

我已经阅读了旧 Ember 材料中的一些参考资料,以便能够生成您自己的 ID,createRecord但我找不到当代参考资料。

我对完全不同的方法持开放态度,因此欢迎提出任何建议。

最后,虽然我使用数据存储在客户端保存数据,但我实际上并没有使用 Ember-Data 与服务器通信(不确定这有什么区别,但我想我会说清楚)。

标签: ember.jsember-dataember-power-select

解决方案


您可以在路由的模型挂钩中返回新创建的记录(听起来您已经这样做了),然后在控制器中通过this.get('model'). 如果您打算保留它并让您的服务器生成记录 ID,您可以执行类似的操作api.post(record).then(response => store.pushRecord(response)),那么您将能够通过它的新服务器生成的 ID 找到它。store.peekRecord(response.id)


推荐阅读