解析查询没有正确比较

时间:2014-05-13 16:32:55

标签: javascript parse-platform

我想要做的是在我的Parse云代码中运行查询,将top2数组的两个内容与用户关联的每个categoryId对象的userCategory属性进行比较。但是,当我运行此代码时,尽管数据库中存在匹配项,但它仍无法正确查找匹配项。

我认为问题出在这里:

      query.containedIn('categoryId', top2);
      query.equalTo('User', Parse.User.current())

我认为categoryId可能不正确使用top2。我也不完全确定第二行,因为它似乎会将// Query sent from search bar Parse.Cloud.define("eBayCategorySearch", function(request, response) { url = 'http://svcs.ebay.com/services/search/FindingService/v1'; Parse.Cloud.httpRequest({ url: url, params: { 'OPERATION-NAME' : 'findItemsByKeywords', 'SERVICE-VERSION' : '1.12.0', 'SECURITY-APPNAME' : '*APP ID GOES HERE*', 'GLOBAL-ID' : 'EBAY-US', 'RESPONSE-DATA-FORMAT' : 'JSON', 'itemFilter(0).name=ListingType' : 'itemFilter(0).value=FixedPrice', 'keywords' : request.params.item, }, success: function (httpResponse) { // parses results var httpresponse = JSON.parse(httpResponse.text); var items = []; httpresponse.findItemsByKeywordsResponse.forEach(function(itemByKeywordsResponse) { itemByKeywordsResponse.searchResult.forEach(function(result) { result.item.forEach(function(item) { items.push(item); }); }); }); // count number of times each unique primaryCategory shows up (based on categoryId), returns top two IDs and their respective names var categoryIdResults = {}; // Collect two most frequent categoryIds items.forEach(function(item) { var id = item.primaryCategory[0].categoryId; if (categoryIdResults[id]) categoryIdResults[id]++; else categoryIdResults[id] = 1; }); var top2 = Object.keys(categoryIdResults).sort(function(a, b) {return categoryIdResults[b]-categoryIdResults[a]; }).slice(0, 2); console.log('Top category Ids: ' + top2.join(', ')); var categoryNameResults = {}; // Collect two most frequent categoryNames items.forEach(function(item) { var categoryName = item.primaryCategory[0].categoryName; if (categoryNameResults[categoryName]) categoryNameResults[categoryName]++; else categoryNameResults[categoryName] = 1; }); var top2Names = Object.keys(categoryNameResults).sort(function(a, b) {return categoryNameResults[b]-categoryNameResults[a]; }).slice(0, 2); console.log('Top category Names: ' + top2Names.join(', ')); // compare categoryIdResults to userCategory object //Extend the Parse.Object class to make the userCategory class var userCategory = Parse.Object.extend("userCategory"); //Use Parse.Query to generate a new query, specifically querying the userCategory object. query = new Parse.Query(userCategory); //Set constraints on the query. query.containedIn('categoryId', top2); query.equalTo("User", Parse.User.current()) //Submit the query and pass in callback functions. var isMatching = false; query.find({ success: function(results) { var userCategoriesMatchingTop2 = results; console.log("userCategory comparison success!"); console.log(results); if (userCategoriesMatchingTop2 && userCategoriesMatchingTop2.length > 0) { isMatching = true; } response.success({ "results": [ { "Number of top categories": top2.length }, { "Top category Ids": top2 }, { "Top category names": top2Names }, { "Number of matches": userCategoriesMatchingTop2.length }, { "User categories that match search": userCategoriesMatchingTop2 } ] }); console.log('User categories that match search: ' + results) }, error: function(error) { //Error Callback console.log("An error has occurred"); console.log(error); } }); }, error: function (httpResponse) { console.log('error!!!'); response.error('Request failed with response code ' + httpResponse.status); } }); }); 与User对象进行比较,而不是与之关联的userCategory对象的实例。

完整代码:

Parse.Cloud.define("userCategoryCreate", function(request, response) {
    var userCategory = Parse.Object.extend("userCategory");
    var newUserCategory = new userCategory();
    newUserCategory.set("categoryId", "");
    newUserCategory.set("minPrice");
    newUserCategory.set("maxPrice");
    newUserCategory.set("itemCondition");
    newUserCategory.set("itemLocation");
    newUserCategory.set("parent", Parse.User.current());
    newUserCategory.save({ 

      success: function (){
        console.log ('userCategory successfully created!');
        response.success('Request successful');
      },

      error: function (){
        console.log('error!!!');
      response.error('Request failed');
      }

    });
});

userCategory结构:

I2014-05-13T18:11:25.243Z] v169: Ran cloud function eBayCategorySearch for user jKs5QpXjpd with:
  Input: {"item":"iphone 5 16gb"}
  Result: {"results":[{"Number of top categories":1},{"Top category Ids":["9355"]},{"Top category names":["Cell Phones & Smartphones","Mobile & Smart Phones"]},{"Number of matches":0},{"User categories that match search":[]}]}
I2014-05-13T18:11:26.530Z] Top category Ids: 9355
I2014-05-13T18:11:26.531Z] Top category Names: Cell Phones & Smartphones, Mobile & Smart Phones
I2014-05-13T18:11:26.633Z] userCategory comparison success!
I2014-05-13T18:11:26.633Z] []
I2014-05-13T18:11:26.633Z] User categories that match search: 

日志:

{{1}}

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试匹配不存在的字段。基于创建代码,

query.equalTo('User', Parse.User.current())

应该是

query.equalTo('parent', Parse.User.current())