2015-04-02 71 views
2

我有一個類Store,它有一個關係itemsInStore,其中包含多個Parse上的Item對象。我目前正在嘗試解析雲代碼以檢索中的所有Store,但不知道這是一種常見的做法。如何從類關係中檢索對象列表?

特別是,我找不到真正回答我的問題的文章,例如查詢應該如何。

Parse.Cloud.define("retrieveNearbyLocationsAndItemsWithCurrentLocation", function(request, response) { 
    var Store = Parse.Object.extend("Store"); 
    var store = new Store(); 
    var query = new Parse.Query(Store); 
    var userGeoPoint = new Parse.GeoPoint(request.params.lat, request.params.long); 

    query.near("geopoint", userGeoPoint); 
    query.limit(1); 

    query.find({ 
     success: function(httpResponse) { 
      response.success(httpResponse[0].get("itemsInStore")); 
      console.log(httpResponse[0].get("itemsInStore")); 

     }, 
     error: function(httpResponse) { 
      response.error("Error: retrieveNearbyLocationsAndItemsWithCurrentLocation"); 
     } 


    }); 


}); 

控制檯日誌將返回{"__type":"Relation","className":"Item"}

爲了挖這個Relation和檢索所有Item對象,下一步應該做些什麼?

+1

'var query = aStore.get(「itemsInStore」)。query();' – danh 2015-04-02 05:23:10

+0

@danh感謝您的提示!然而,我不斷收到錯誤,如'錯誤:無法序列化未保存的Parse.Object',不知道該怎麼做。謝謝:) – udjat 2015-04-02 06:42:08

+1

這是值得發佈的代碼---我添加了一個明確的關於如何使用關係列的答案。錯誤消息可能是嘗試返回關係的結果,而不是其查詢的結果。 (從來沒有試圖只返回一個PFRelation ...糟糕的錯誤信息,因爲沒有試圖保存任何東西)。 – danh 2015-04-02 14:06:45

回答

1

該關係式回答查詢。運行該查詢以獲取相關元素。

Parse.Cloud.define("retrieveNearbyLocationsAndItemsWithCurrentLocation", function(request, response) { 
    var Store = Parse.Object.extend("Store"); 
    var store = new Store(); 
    var query = new Parse.Query(Store); 
    var userGeoPoint = new Parse.GeoPoint(request.params.lat, request.params.long); 
    query.near("geopoint", userGeoPoint); 
    query.limit(1); 

    query.find().then(function(stores) { 
     if (stores.length && stores[0].relation("itemsInStore")) { 
      var itemQuery = stores[0].relation("itemsInStore").query(); 
      return itemQuery.find(); 
     } else { 
      return []; 
     } 
    }).then(function(items) { 
     response.success(items); 
    }, function(error) { 
     response.error(error); 
    }); 
}); 
+0

感謝您的真棒回答!我建議將if(stores.length && stores [0] .get(「itemsInStore」))''改爲if(stores.length && stores [0] .relation(「itemsInStore」))'和下一行,因爲我會得到TypeError。 – udjat 2015-04-02 14:46:38