Heres是我正在尝试做的事情:
获取一个名为RecentPlayers
的数组,其中包含4个objectId - 这是有效的。
为每个objectId运行查询以查找其对应的“名称”(字符串)。 - 不工作。
将这些名称放入一个名为names
的无法想象的新数组中。 - 一旦#2工作,这应该有效。
守则:
$(document).ready(function _RP(){
//Our objectId's array
var recentlyPlayed = Parse.User.current().get("RecentPlayers");
//Our names array
var names = [];
//Converting
var User = Parse.Object.extend("User");
var query = new Parse.Query(User);
for (var j = 0; j < recentlyPlayed.length; j++) {
query.equalTo("objectId", recentlyPlayed[j]);
query.find({
success: function(results) {
var name = results[j].get("name");
console.log(name);
names.push(name);
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
names = names.sort();
错误:
var name = results[j].get("name");
控制台:
(4) Uncaught TypeError: Cannot read property 'get' of undefined
query.find.succes
(anonymous function)
e
(anonymous function)
x.each.x.forEach
c.extend.resolve
e
(anonymous function)
x.each.x.forEach
c.extend.resolve
e
(anonymous function)
x.each.x.forEach
c.extend.resolve
(anonymous function)
e
(anonymous function)
g
c.extend.then
e
(anonymous function)
x.each.x.forEach
c.extend.resolve
j.onreadystatechange
我猜这与Parse.com的异步性质有关。谢谢你的帮助!
答案 0 :(得分:1)
在这种情况下,query.containedIn可能是更合适的约束。请尝试以下代码段:
var query = new Parse.Query(Parse.User);
query.containedIn("objectId", recentlyPlayed);
query.find().then(function(users) {
for(var i=0; i < users.length; i++) {
names.push(users[i].get("name"));
}
names.sort();
});
答案 1 :(得分:0)
谢谢,eth3lbert,只需在 i=0
中设置 users[i]
和 name.push
。
var query = new Parse.Query(User);
query.containedIn("objectId", recentlyPlayed);
query.find().then(function(users) {
for (var i=0; i < users.length; i++) {
names.push(users[i].get("name"));
}
names = names.sort();