我有2个班级
- 用户
- StockProduct
醇>
StockProduct的用户关系列 sold_by 。
我正在尝试为相应的 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()));
}
});
我通过Parse DataBrowser成功检索了这个关系。
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"));
}
});
答案 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