gpt4 book ai didi

javascript - parse.com 使用 Javascript 多对多获取指针 ID 列表

转载 作者:行者123 更新时间:2023-11-28 00:19:01 25 4
gpt4 key购买 nike

我在 parse.com 上遇到多对多关系问题。

首先,我有两个类(Groups 和 Users)和一个类(UserInGroup)来实现 m-to-m 关系。

类结构:

群组:objectId(string) -- GroupName(string) -- ...

用户:objectId(string) -- 用户名(string) -- ...

组内用户:objectId(string) -- 组(指针<组>) -- 用户(指针<用户>)

如何获取特定组中所有用户的用户名(我知道该组的 objectId)。

我试过了

function getUserNameOfGroup(GroupID){
var UserInGroup = Parse.Object.extend("UserInGroup");
var query = new Parse.Query(UserInGroup);
var usersArray = [];

var Groups = Parse.Object.extend("Groups");
var collectionQuery = new Parse.Query(Groups);
collectionQuery.get(GroupID, {
success: function(group) {
query.equalTo("Group", group);
var usersArray = [];
query.find({
success: function(results) {
for (var i = 0; i < results.length; i++) {
var object = results[i];

var user = object.get("User");
user.fetch({
success: function(tempUser) {
usersArray.push(user.get("UserName"));
}
}).done(function() {
if(results.length == usersArray.length){

//do something with the array
}
});
}
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
},
error: function(object, error) {
alert("Error: " + error.code + " " + error.message);
}
});
}

为了测试我放了

if(results.length == usersArray.length){
for (var i = 0; i < usersArray.length; i++) {
alert(usersArray[i]);
}
}

在完成部分。 usersArray 的第一个条目始终是“undefinde”。

我做错了什么?或者更确切地说,有没有一种更简单、更美观、更快捷的方式来获取数组呢?我确信有更好的解决方案;)。

感谢您的帮助。

最佳答案

无需对 UserInGroup 的 User 属性进行额外的查询。可以使用 include() 急切地获取这些内容,如下所示:

// return a promise that is fulfilled with an array of users belonging to
// the Group with id groupId
function usersInGroup(groupId) {
var groupQuery = new Parse.Query("Groups");
return groupQuery.get(groupId).then(function(group) {
var userInGroupQuery = new Parse.Query("UserInGroup");
userInGroupQuery.equalTo("Group", group);
// eagerly fetch the related user...
userInGroupQuery.include("User");
return userInGroupQuery.find();
}).then(function(results) {
var users = [];
for (var i = 0; i < results.length; i++) {
var object = results[i];
users.push(object.get("User"));
}
return users;
});
}

这样调用它:

usersInGroup(someGroupId).then(function(users) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
console.log(user.getUserName()); // or get("username")
}
}, function(error) {
console.log(error);
});

关于javascript - parse.com 使用 Javascript 多对多获取指针 ID 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196653/

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