2016-01-20 31 views
1

一個ParseRelation我有2個班獲取相關ParseUser從針對Android

  1. 用戶
  2. StockProduct

StockProduct有關係列sold_by的用戶。

enter image description here

我試圖找回sold_by爲相應StockProduct,但是,它的返回0對象以下代碼。

/** 
* GET SELLER FOR CURRENT PRODUCT 
* current_stock_object: ParseObject for StockProduct 
*/ 

ParseRelation getSellerRelation = current_stock_object.getRelation("sold_by"); 
ParseQuery getSeller = getSellerRelation.getQuery(); 

getSeller.findInBackground(new FindCallback<ParseUser>() { 

    @Override 
    public void done(List<ParseUser> users, ParseException e) { 
     if (e!=null){ 
      e.printStackTrace(); 
     } 
     Log.d("SIZE", Integer.toString(users.size())); 
    } 
}); 

輸出: enter image description here

我成功地檢索通過解析DataBrowser的關係。

enter image description here

邊注

/** 
* GET PRICE FOR CURRENT PRODUCT 
*/ 

ParseRelation<ParseObject> getPriceRelation = current_stock_object.getRelation("prices"); 
ParseQuery getPrice = getPriceRelation.getQuery(); 
getPrice.findInBackground(new FindCallback<ParseObject>() { 

    @Override 
    public void done(List<ParseObject>prices, ParseException e) { 
     Log.d("PRICE SIZE", Integer.toString(prices.size())); 
     System.out.println(prices.get(0).get("costPrice")); 
    } 
}); 

enter image description here 工作完全正常,留下我與,得到ParseUser需要不同的方法的思想。 任何幫助,將不勝感激。

回答

3

我會嘗試:

ParseRelation<ParseUser> getSellerRelation = current_stock_object.getRelation("sold_by"); 
getSellerRelation.getQuery().findInBackground(new FindCallback<ParseUser>() { 

    @Override 
    public void done(List<ParseUser> users, ParseException e) { 
     if (e!=null){ 
      e.printStackTrace(); 
     } 
     Log.d("SIZE", Integer.toString(users.size())); 
    } 
}); 

所有我添加了一個顯式類型的ParseRelation(在這種情況下ParseUser)。文檔使用正是這種語法,所以我不知道爲什麼這不會用於獲取關係..也許你的「current_stock_object」需要被提取,或者「current_stock_object」不是你正在看的那個解析控制檯。使用調試器並檢查「current_stock_object」的字段,並確保objectId與您在控制檯中查看的對象相匹配。同樣,對象可能是過時的可能需要獲取

旁註:(不相關的可能)

務必僅使用ParseRelation了許多一對多的關係,否則只是直接存儲ParseObjects爲一個領域。在這種情況下,您有一個與_User表有關的StockProduct。如果您的應用程序中的StockProduct可以有多個賣家,請使用ParseRelation。如果它實際上是打算一個StockProduct可能只有一個唯一的賣家,切換到不使用ParseRelation

+0

感謝您的建議,雖然我試過'ParseRelation getSellerRelation = current_stock_object.getRelation(「sold_by」);',但它沒有改變結果。它仍然是** 0對象**。 – anurag

+0

'System.out.println(current_stock_object.getObjectId());'給出正確的objectId '01-21 01:21:28.166 30790-30790/com.localbay.anuragsingh I/System.out:xDq7vGyO8r' – anurag

+0

試試看將關係鑄造成ParseRelation 。ParseUser是的parseObject的子類反正,所以它應該只是罰款.. –