繁体   English   中英

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

[英]Parse.com How to return a value from a query in Android

我正在使用Parse API来查询Android应用程序的某些数据,并且我想知道如何从Parse Query返回值(例如Boolean )。 例如,我想要一个如果存在某些数据则返回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;
            }
        });
    }

我确实知道无法通过这种方式完成此操作,因为查询是在后台线程中处理的,并且我对Callbacks不太熟悉。 我知道在Parse.com中也有类似的问题, 如何获取查询的返回值,但这是针对JavaScript 你有关于如何做到这一点的想法吗?

你快到了。 当您获得解析对象时,请使用以下命令将其提取:

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);

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

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());
            }
        }
    });

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM