Parse.com如何从Android中的查询返回值

时间:2017-04-24 17:12:38

标签: java android parse-platform return-value

我使用Parse API查询Android应用程序的某些数据,我想知道如何从{{1}返回一个值(例如Boolean) }。例如,如果存在某些数据,我想要一个返回Parse Query的函数,而true则是这样的:

false

我知道这不可能以这种方式完成,因为查询是在后台线程中处理的,而且我对 public Boolean myFunction(){ ParseQuery<ParseObject> query = ParseQuery.getQuery(); query.findInBackground("someData",new GetCallback<ParseObject>() { @Override public void done(ParseObject lan, ParseException e) { if(e==null){ return true; } else { return false; } }); } 不是很熟悉。 我知道这里有一个类似的问题Parse.com how to get return value of query,但这是Callbacks。 你知道怎么做吗?

2 个答案:

答案 0 :(得分:0)

你快到了。当你得到解析对象时,用:

提取它
boolean myBoolean = myParseObject.getBoolean("myBooleanColumn");

完整示例(通过id查找对象,可以适用于其他类型的查询):

ParseQuery<ParseObject> query = ParseQuery.getQuery("YourClass");
query.getInBackground("id", new GetCallback<ParseObject>() {
  public void done(ParseObject myParseObject, ParseException e) {
    if (e == null) {
      boolean myBoolean = myParseObject.getBoolean("myBooleanColumn");
    } else {
      // something went wrong
    }
  }
});

更新:如果您只想检查行中是否存在某些数据,可以使用

进行更新
query.whereEqualTo("columnToFind", "searchterm");

您甚至可以找到将数组与行中的数据进行比较

query.whereContainsAll("columnToFind", arrayOfThingsToSearch);

答案 1 :(得分:0)

经过一些研究并感谢@buckettt,最简单的方法就是使用Parse Cloud Code。在main.js文件夹中的parse-server文件中定义您的函数:

Parse.Cloud.define("myFunction",function(req,res){
   var userId = req.params.userId; //params passed in Client code
   var myQuery = new Parse.Query(Parse.User);
   myQuery.equalTo("userId", userId);
   myQuery.find({
      success: function(results) {
          res.success(results.get("userName"));
      }
      error: function() {
         res.error("Failed !");
      }
   }

});

在您客户的代码中:

    HashMap<String, Object> params = new HashMap<String, Object>();
    params.put("userId",userId);
    ParseCloud.callFunctionInBackground("myFunction", params, new FunctionCallback<String>() {
        public void done(String res,ParseException e){
            if (e == null) {
                Log.i("Results :",res);
            } else {
                Log.i("Error",e.getMessage());
            }
        }
    });

这样您就可以返回所需的值,并且该功能直接在您的服务器上执行。希望这有帮助