gpt4 book ai didi

ember.js - 如何过滤 hasMany 关系?

转载 作者:行者123 更新时间:2023-12-01 23:52:34 25 4
gpt4 key购买 nike

我有一个用户对象,它被加载到位于 session.user 的 session 中。可以为用户分配许多角色。这是模型上的样子:

App.User = DS.Model.extend({
roles : DS.hasMany('role'),
...
}

角色作为嵌入式记录与用户一起加载。我可以验证它们是否已成功加载到 ember-data 存储中,并且用户和角色之间的关系都很好。

我想做的是根据角色属性获得用户角色之一。我试过了

this.get('session.user.roles').then(function (roles) {
return roles.filterBy('propertyName', 'propertyValue');
});

但我不相信 get 方法会像 store.find() 方法那样返回一个 promise 。提供给我哪些方法来过滤角色?

最佳答案

作为附加 promise 的结果,您这样做的方式是可用的。让我看看是否可以分解它。

以下是显示过滤角色可用位置的长方法:

var rolesPromise = this.get('session.user.roles');

var filteredRolesPromise = rolesPromise.then(function (roles) {
return roles.filterBy('propertyName', 'propertyValue');
});

filteredRolesPromise.then(function(filteredRoles){
// available here
console.log(filteredRoles.get('length'));
});

以下是显示筛选角色可用位置的简短方法:

this.get('session.user.roles').then(function (roles) {
var filteredRoles = roles.filterBy('propertyName', 'propertyValue');
// available here
console.log(filteredRoles.get('length'));
});

var foo = this.get('session.user.roles').then(function (roles) {
return roles.filterBy('propertyName', 'propertyValue');
}).then(function(filteredRoles){
// available here
console.log(filteredRoles.get('length'));
});

将属性返回给 promise 只是让它可用于下一个附加的 promise,它不会将它分配给变量(在此处的情况下为 foo)。

这有助于 promise :https://www.youtube.com/watch?v=8WXgm4_V85E

基本上我是说,因为角色是一个异步属性,所以您永远无法以同步方式安全地使用它。

关于ember.js - 如何过滤 hasMany 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776593/

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