Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 使用余烬数据查找单例_Ember.js_Ember Data - Fatal编程技术网

Ember.js 使用余烬数据查找单例

Ember.js 使用余烬数据查找单例,ember.js,ember-data,Ember.js,Ember Data,在余烬数据中有没有一种传统的方法来查找单个元素?我已根据以下说明(在“单数”下)为我的GameState型号设置了适配器: 现在,当我获取游戏状态时,我希望能够做到: store.find('gameState'); 但这会在余烬数据中启动一个findAll请求类型,它需要一个数组,而不是一个对象 我的另一个选择是这样做: store.find('gameState', 'mine'); mine参数被忽略,但这将成功获取并加载我的游戏状态。这里的缺点是,余烬数据在我的商店中创建了一个额外的

在余烬数据中有没有一种传统的方法来查找单个元素?我已根据以下说明(在“单数”下)为我的
GameState
型号设置了适配器:

现在,当我获取游戏状态时,我希望能够做到:

store.find('gameState');
但这会在余烬数据中启动一个
findAll
请求类型,它需要一个数组,而不是一个对象

我的另一个选择是这样做:

store.find('gameState', 'mine');
mine
参数被忽略,但这将成功获取并加载我的游戏状态。这里的缺点是,余烬数据在我的商店中创建了一个额外的
GameState
实例,id为
mine
。有没有办法防止这种情况

我使用的是灰烬数据1.0.0-beta.11

我的模型是这样的:

var GameState = DS.Model.extend({
    currentPuzzle: DS.belongsTo('puzzle'),
    currentRound: DS.belongsTo('puzzleRound'),
    currentInventory: DS.attr('number'),
    moves: DS.hasMany('move', {async: true}),
    createdAt: DS.attr('date'),
    updatedAt: DS.attr('date')
});

不,不幸的是,这是这样做的副作用。你可以在这里做一些不同的事情:

  • 使用私有方法/成员进行破解
  • 切换到findAll/findQuery方法更改api,然后只返回结果中的第一项(这将是唯一的结果)
  • 做一个无聊的ajax调用,并侧载记录
  • findAll/findQuery-痛苦是因为您必须更改api jqueryajax侧加载

    您在哪里获取游戏状态?它与调用它的模型有任何关系吗?游戏状态url位于
    /api/game\u state
    。我更新了我的问题,加入了游戏状态模型。谢谢你的回答。你有没有可能将我链接到github问题、博客帖子或任何真正能解释他们背后原因的东西?在我看来,余烬数据可能存在这么长时间,而不支持什么背后的推理,也不支持什么?:)这里有两个问题,你说的是哪一个?不支持请求单例资源。对不起,不清楚。你们在这里所做的只是看起来在核心灰烬数据中应该有一些东西
    return this.store.find('foo').then(function(records){
      return records.get('firstObject');
    });
    
    var store = this.store;
    return $.ajax('foo').then(function(data){
      return store.push('foo', data);   // push returns the record
    });