如何创建 Ember 数据事务

how to create an ember data transaction

本文关键字:Ember 数据 事务 创建 何创建      更新时间:2023-09-26

>我正在尝试创建一个事务来创建新用户。

从余烬数据中.js src

若要创建新事务,请transaction()
调用 应用程序的DS.Store实例:

  var transaction = App.store.transaction();

我正在尝试在控制器中创建事务

App.CreateUserController = Ember.Controller.extend({
    addUser: function() {
        var transaction = App.store.transaction();
    }
});

但我得到了

TypeError: App.store is undefined

我定义了这家商店

App.Store = DS.Store.extend({
  revision: 11,
  adapter: App.Adapter.create({})
});

它使用了大写 S,所以我尝试将 App.store 更改为 App.Store,我得到

TypeError: App.Store.transaction is not a function

如果我将 App.Store 更改为使用小写字母s,我会得到

TypeError: store is undefined

我错过了什么吗?

Transaction in Ember.js 消失了:保存单个记录。 https://github.com/emberjs/data/blob/master/TRANSITION.md

您需要创建一个存储而不是扩展它。约定是在创建实例时使用小写字母,因此您应该创建一个存储并将其命名为 App.store 而不是 App.Store

App.store = DS.Store.create({
  revision: 11,
  adapter: App.Adapter.create({})
});

然后,您将能够创建交易

var transaction = App.store.transaction();

你已经定义了App.Store,这是一个;你extend DS.Store,这是一个现有的类。创建事务的代码应该在存储的实例上调用(按照惯例,类是大写的,实例是小写的)。

要创建已定义存储的实例,请执行以下操作:

App.store = App.Store.create();
myTransaction = App.store.transaction();

请注意,extend Store 类以获取自己的 Store 类,并在自己的存储类上调用 create 来实例化它。

有关扩展与创建的详细信息,请参阅 ember.js 扩展和创建之间有什么区别?