为什么此查询会返回所有查询结果,而不仅仅是那些与用户名匹配的结果?

时间:2014-05-26 12:35:01

标签: javascript parse-platform

更新 - 赏金是帮助我解决此问题并允许代码根据用户输入过滤回查询结果。如果通过jfiddle

提供帮助,则可以共享完整代码

我无法理解为什么下面的脚本会将所有结果返回给用户,因为它只应返回" myBadges"由" friendName"。

上传的课程

使用objectId而不是实际名称" dave"与?

相关联

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

仍然坚持这一点。根据我的原始问题:
Why does the query not return results after I switch the class it queries?

<script?
$(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>

Here is the console. enter image description here

1 个答案:

答案 0 :(得分:3)

您的代码声明:

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

它没有将正确的对象分配给query

我认为应该是

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

更新

此处显示其他问题,friendName变量。

这是在friendFeed函数中声明的:

function friendFeed() {
    var friendName = $('#friendsearch').val();
    ...
}

这样,它无法在函数外部访问。另外,您在此设置了一个值,但尝试在事件中覆盖它。

首选参数:

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

function friendFeed(friendName) {
    //var friendName = $('#friendsearch').val();
    ...
}