0

我正在尝试使用带有 Ember-Data 的 Fixture Adapter 开发应用程序。

当我尝试创建一个新对象(基于我定义的模型)时,除非我指定 ID,否则它将无法工作。

如果我指定 ID 并执行此操作:

var person = SD.Person.createRecord({
    id: 234,
    name: "test"
});

var person.save();

我得到:

错误:断言失败:适配器无法将新 id 分配给已有 id 的记录。有 id: 234 并且您尝试使用 234 更新它。这可能是因为您的服务器返回数据以响应具有与您发送的不同 id 的查找或更新。

这听起来像是我正在更新现有记录(我不是,我的 Person 对象只有 2 个固定装置,ID 分别为 1 和 2)。

Ember 是否试图以某种方式两次保存我的对象?

我想我可能不得不尝试使用generateIdForRecord来设置 ID,但无论我尝试什么,我都无法引用该函数。

newBooking.set('id', this.store.generateIdForRecord(this.store, newBooking));
newBooking.set('id', DS.generateIdForRecord(this.store, newBooking));
newBooking.set('id', this.generateIdForRecord(this.store, newBooking));
newBooking.set('id', generateIdForRecord(this.store, newBooking));

TypeError:this.store.generateIdForRecord 不是函数

我正在使用最新版本的 Ember 和 Ember-Data(也尝试过以前的版本)。我的模型的实现与 Ember 指南中的 TodoMVC 教程没有什么不同,在教程中,不需要做任何花哨的事情来使用 Fixture 适配器管理 ID,所以我真的不知道发生了什么。

如何创建一个新的 Person 对象(根据我的示例,只有一个“名称”字段并使用 Ember-Data 的夹具适配器将其持久化,而不会出现上述错误?

4

1 回答 1

1

最后,我的第一个代码片段运行良好。

出于某种原因,我期待看到新对象被保留在开发者控制台中。我的模型被列在不同的视图中,所以我没有意识到它实际上是按预期工作的。

于 2013-06-11T12:25:57.833 回答