从Android的ParseRelation获取相关的ParseUser

时间:2016-01-20 19:25:28

标签: java android parse-platform

我有2个班级

  
      
  1. 用户
  2.   
  3. StockProduct
  4.   

StockProduct的用户关系列 sold_by

enter image description here

我正在尝试为相应的 StockProduct 检索 sold_by ,但是,它会为以下代码返回 0个对象。< / p>

 /**
 * 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

我通过Parse DataBrowser成功检索了这个关系。

enter image description here

SIDE NOTE

 /**
 * 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需要一个不同的方法。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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)。文档正好使用了这种语法,所以我不确定为什么这对于获取关系不起作用..也许你的&#34; current_stock_object&#34;需要获取,或者&#34; current_stock_object&#34;不是你在Parse控制台中看到的那个。使用调试器并检查&#34; current_stock_object&#34;的字段。并确保objectId与您在控制台中查看的对象匹配。同样,对象可能过时可能需要获取

旁注:(可能无关)

确保仅将ParseRelation用于多对多关系,否则只将ParseObjects直接存储为字段。在这种情况下,您的StockProduct与_User表有关系。如果您的应用中有理由认为StockProduct可以有多个卖家,请坚持使用ParseRelation。如果实际上打算StockProduct只有一个独特的卖家,请切换到不使用ParseRelation