我需要从该角色获得所有用户。我已经知道了这个代码,但我不知道如何从角色中获取用户。
我只知道我需要在角色上使用getUsers()
功能,但我遇到了问题。
我的代码:
self.getCompanyUsers = function getCompanyUsers() {
$rootScope.displayLoading = true;
var userQuery = new Parse.Query(Parse.Role);
userQuery.contains('name', $state.params.id);
userQuery.find().then(function(roles) {
$scope.users = roles;
$rootScope.displayLoading = false;
}).then(function() {
console.log(roles.getUsers());
})
};
答案 0 :(得分:1)
您提供的代码似乎存在一些问题,以前需要修复。
首先;你的承诺流程似乎有点过时了。你试图继续它而不返回任何东西。我不确定为什么你需要在承诺链中这样做,因为你不必等待任何事情完成。所以你应该删除第二个then
,除非你从你发布的代码中省略了一些东西。
其次;你试图在一个Parse.Role数组上调用getUsers()
。根据此功能的最终用途,有几种方法:
userQuery.find()
更改为userQuery.first()
,这只会返回一个对象,而roles.getUsers()
将有效。getUsers()
。我建议这不是你想要做的,因为它可能会导致对User对象进行大量查询,如果这是你想要的,可能会有更好的选择。 第三; getUsers()
将只返回Parse.Relation,而不是角色中的用户。要获取用户,您必须首先获取查询对象。如此:role.getUsers().query();
这是一个普通的Parse.Query,您可以这样使用它。例如,role.getUsers().query().find()
如果我思考正确,你会想要类似的东西:
self.getCompanyUsers = function getCompanyUsers() {
$rootScope.displayLoading = true;
var userQuery = new Parse.Query(Parse.Role);
userQuery.contains('name', $state.params.id);
userQuery.first().then(function(role) {
$scope.users = role;
if(!role)
{
//check a role has been found
return Parse.Promise.error("No role found")
}
//role.getUsers() will be the Parse.Relation
//role.getUsers().query() will be a normal Parse.Query
return role.getUsers().query().find();
}).then(function(users)
{
//users will be an array of the users in the role, depending on ACL/CLP.
console.log(users);
$rootScope.displayLoading = false;
}
)
};