2

我有一堆“属于”其他记录的记录。(不同的模型,只是典型的 1-n 关系。)如何在我的模型上调用 find 来查找所有没有属于关联的那些?

就像是:

App.Thing = DS.Model.extend({
 other: DS.belongsTo( 'App.Other' ),
 someattr: DS.attr('string')
});

App.Thing.find({ other: null });

编辑:

louiscoquio 的解决方案对我不起作用。所以我想我可以在控制器中过滤。

这是我尝试这样做的方法:

App.ThingsAsideController = Ember.ArrayController.extend({
  unassigned: function() {
   return this.filterProperty('other');
  }.property('content.@each')
});

someattr如果我过滤但我无法过滤关系,这很好用。

我想问题是:belongsTo 关联的属性名称是什么?

编辑,一些有效的东西:

这行得通,但我对此很不满意:

 App.ThingsAsideController = Ember.ArrayController.extend({
   unassigned: function() {
     return this.filter(function(item, index, enumerable){

       var belongsToOther = false;

       var otherThings = App.OtherThing.find();
       otherThings.forEach( function( otherThing ){
         otherThing.get('things').forEach( function( otherThingThing ) {
            if( otherThingThing.id === item.id ) {
              belongsToOther = true;
            }
         });
       });

       return !belongsToOther;
    });

我一直在阅读 ember-data 源,但我不知道如何查询记录的所属关联。

4

1 回答 1

2

您可以使用类filter可用的方法DS.Model

var filteredThings = App.Thing.filter(function(thing) {
  return thing.get('other') === null;
});

它返回一个数组,其中包含您传递的回调App.Thing中返回的所有内容。true

正如文档所说:

它返回一个实时 RecordArray,当新记录加载到存储中或在本地创建时,该记录保持最新。

于 2013-02-14T21:58:20.560 回答