为什么从查询运行返回不正确的数据?

时间:2014-05-26 17:06:55

标签: javascript jquery parse-platform

使用Parse.com和JavaScript SDK。

http://www.kudosoo.com/friendslist.html

在这里使用代码http://jsfiddle.net/Dano007/LJ8rn/(仅适用于ref,它不会运行)。

我希望在用户点击用户名后返回在“friendName”变量中选择的用户的上传徽章。

点击用户名时我看到的是

  Username.push(object.get("uploadedBy"));  

返回他们刚刚点击的名称的用户名,而不是上传徽章的人的实际用户名。

因此,我得出结论,在我的JQuery / JavaScript代码中的某个地方,我有点选择错误的元素。我认为这必须与FriendName变量有关吗?但我无法解决它,它让我疯狂

在屏幕截图中,您可以看到应该在

中返回的a3aePaphBF
<div id="FriendsStuffName"></div>

不是'A','dan'或'rob'

$(document).ready(function() {  
  $(document).on('click','.username', function (event) {
    event.preventDefault();
    friendName = $(this).text();
    console.log(friendName);
    friendFeed();
  });
});

/////////////////

var currentUser = Parse.User.current();
var myBadges = Parse.Object.extend("myBadges");


// Captures the input from the user and checks if the name already exists within the Db.
function friendFeed() {
  var friendName = $('#friendsearch').val();
  //console.log(friendName);
  var query = new Parse.Query(myBadges);

  new Parse.Query("myBadges").matchesQuery("uploadedBy", new Parse.Query("_User").equalTo("username", friendName));

  query.find({
    success: function (rules) {
               imageURLs = [];
               for (var i = 0; i < rules.length; i++) { 
                 var object = rules[i];
                 imageURLs.push(object.get("BadgeName"));
                 Username.push(object.get("uploadedBy"));
               }

               for(var j = 0; j < imageURLs.length; j++) {  
                 $('#FriendsStuff').append("<img class='images' src='" + imageURLs[j] + "'/>");
                 $('#FriendsStuffName').append("<div class='username'>'"+Username[j]+"'</div>");
               }
             },
    error: function(error) {
             //If the query is unsuccessful, report any errors
             alert("Error: " + error.code + " " + error.message);
            }
  });
}
</script>


<div id="imgs"></div>
<div id="username"></div>
<div id="container"></div>
<div id="FriendsStuff"></div>
<div id="FriendsStuffName"></div>
</body>
</html>

enter image description here

这是我的用户

enter image description here

1 个答案:

答案 0 :(得分:0)

这没有意义:

var query = new Parse.Query(myBadges);

new Parse.Query("myBadges").matchesQuery("uploadedBy", new Parse.Query("_User").equalTo("username", friendName));

首先,您要为“myBadges”创建一个查询,并将其分配给变量“query”。然后,您还要为“myBadges”创建另一个查询。此新查询未在任何位置分配。

您正在运行“查找”操作的查询是您已分配给查询变量的查询。

如果你期望第二行,对第一行有任何影响,那么这可能是你错误的根源。

试试这个:

var query = new Parse.Query(myBadges);
query.matchesQuery("uploadedBy", new Parse.Query("_User").equalTo("username", friendName));
query.find({
    success: function (rules) {