我有一个Android应用程序,使用Parse存储公司名称和与公司相关的名称。
我能够创建一个名为ownedby的列,用于存储userID。
现在,我想将信息存储在公司列中,其中userby中的userID等于当前用户。这是我正在使用的查询:
ParseQuery<ParseObject> query = ParseQuery.getQuery("midwifefirm");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> midwives, ParseException e) {
// TODO Auto-generated method stub
if(e==null) {
for (ParseObject midwifefirm : midwives) {
String midwiferelation;
ParseUser currentUser;
String userID;
midwiferelation = midwifefirm.getString("ownedby");
currentUser = ParseUser.getCurrentUser();
userID = currentUser.getObjectId();
if (midwiferelation.equals(userID)) {
midwifefirm.put("yearsinpractice", yearsexperience);
midwifefirm.put("practicename", midwifefirmname);
midwifefirm.put("education", education);
}
}
}
else{
Log.d("notretreive", "Error: " + e.getMessage());
}
}
});
这似乎有效;但在后端,没有数据存储,所以我想我的&#34; if语句&#34;从来没有工作过。
有什么明显我做错了吗?这是一个论文项目,所以我可以尝试为演示做一些假装,但是想学习如何正确地做。
非常感谢
迈克尔
答案 0 :(得分:0)
我不确定下面的代码完全正确。但是你遇到的问题在于ownedBy
是一个(如我所知)指向用户的指针。
当你尝试midwifefirm.getString("ownedby")
时,你没有像预期的那样得到objectId,而是得到像{'type':'__pointer', 'class' : '_User', 'objectId' : 'xxx'}
这样的东西(我不记得这个符号,但希望你能得到这个想法;文字指针字符串值)。
了解这一点,objectId xxx
字符串永远不能等于midwifefirm.getString("ownedby")
并不奇怪。
而不是getString
,您可以调用getParseUser
,它将返回带有正确objectId的空ParseUser
,回想一下指针只有检索对象所需的最小信息指向。
您现在应该可以直接比较当前的ParseUser
和指针ParserUser
。后者为空的事实应该无关紧要,因为它只需要objectId来执行比较。
试试这个:
ParseQuery<ParseObject> query = ParseQuery.getQuery("midwifefirm");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> midwives, ParseException e) {
// TODO Auto-generated method stub
if(e==null) {
for (ParseObject midwifefirm : midwives) {
ParseUser midwiferelation;
ParseUser currentUser;
midwiferelation = midwifefirm.getParseUser("ownedby");
currentUser = ParseUser.getCurrentUser();
if (midwiferelation.equals(currentUser)) {
midwifefirm.put("yearsinpractice", yearsexperience);
midwifefirm.put("practicename", midwifefirmname);
midwifefirm.put("education", education);
}
}
}
else{
Log.d("notretreive", "Error: " + e.getMessage());
}
}
});