gpt4 book ai didi

ember.js - 管理交易和关系

转载 作者:行者123 更新时间:2023-12-02 08:04:41 26 4
gpt4 key购买 nike

我正在尝试在具有两个属于关系的模型上管理 ember-data 事务(创建和提交记录)。最初,我只是使用(在 Coffeescript 中)将新记录添加到交易中:@transaction.createRecord(App.Book, {author: App.router.authorController.get('content')})

这将作者属性(这是一个 DS.belongsTo 关系)设置为当前作者,然后用户在表单中设置书籍的其他属性,包括来自 select 元素的另一个 owningTo 关系(假设是出版商)。这工作正常,但如果用户要创建第二个新记录,我会收到以下断言:

Ember.assert("已更改关系中的所有记录必须位于同一事务中。当一个记录位于 "+ t + "且另一个位于 "+ prev 中时,您尝试更改记录之间的关系, t === 上一个);

这是来自 one_to_many_change.js file in Ember Data 的第 203 行

我认为这意味着我必须手动将所有相关模型对象添加到事务中。因此,我可以使用以下内容将作者模型添加到事务中:

author = App.router.authorController.get('content')
@transaction.add(author)

然后对可能涉及事务的任何发布者模型执行相同的操作(我是在控制台中执行这些操作)。但是,当我这样做时,我收到以下错误:

错误:断言失败:记录更改后,您无法将其移动到不同的事务中

即使先前(原始)事务已提交,也会发生这种情况。只是想知道其他人如何处理这个问题。我想在事务中分配这种关系一定是 Ember Data 应用程序中的常见流程。

最佳答案

看起来您的 author 对象已被修改并附加到默认事务。然后,您创建一个新交易并为此创建一本书。

您有 2 条记录需要持久化,它们都通过关联链接,但它们位于不同的事务中。

一种方法是使用 author 事务来创建您的图书

var book = author.get('transaction').createRecord(App.Book, {author: author});

关于ember.js - 管理交易和关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com