在Ember.js中根据每个hasMany中存在的对象筛选集合

在Ember.js中根据每个hasMany中存在的对象筛选集合,ember.js,Ember.js,我正试图根据每个项目中是否存在对象来筛选Ember.Enumerable的一个实例hasMany关联 App.Project = DS.Model.extend users: DS.hasMany 'user', async: true App.User = DS.Model.extend() 如何根据每个项目users数组中是否存在单个用户对象来筛选项目集合 user = @store.find('user', 1) @store.find('project').filter (pro

我正试图根据每个项目中是否存在对象来筛选
Ember.Enumerable
的一个实例
hasMany
关联

App.Project = DS.Model.extend
  users: DS.hasMany 'user', async: true

App.User = DS.Model.extend()
如何根据每个项目
users
数组中是否存在单个用户对象来筛选项目集合

user = @store.find('user', 1)
@store.find('project').filter (project) ->
  project.get('users').then (users) ->
    users.contains(user)
因为我的
users
属性是
Project
模型上的
async:true
,所以调用
Project.get('users')
会返回一个承诺,而这个承诺又是从
filter()
调用返回的。相反,我想返回
users
数组是否包含
user
对象


这可能是一个简单的问题。我仍然在为javascript的承诺操心。

我想你的问题在于:

  project.get('users').then (users) ->
那么
的第一个参数是成功时使用的回调,而不是结果响应。所以你应该这样做:

user = @store.find('user', 1)
@store.find('project').filter(project) ->
    users = project.get('users').then() ->
    users.contains(user)
如果我的语法不太正确,请道歉。我对Coffeescript不太熟悉。

project.get('users')。然后(users)->
then
的第一个参数是一个参数为
users
的函数。因此,它编译成类似
project.get('users')。然后(function(users){…