2016-01-20 51 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的子类反正,所以它应该只是罚款.. –