在云代码上修改数据后检索数据

时间:2015-04-14 01:55:50

标签: android parse-platform cloud

我正在尝试获取Parse服务器的日期和时间,但我知道唯一的方法是创建或更新对象,然后检索updatedAt的值。

我的班级

//此类中只有一个数据/对象

Class Test{
  int times
};

我的云代码

增量值“times”是通过getUpdatedAt()获取当前服务器的日期和时间;

Parse.Cloud.define("updateTimes", function(request, response) {
  var test = Parse.Object.extend("Test");
  var query = new Parse.Query(test);
  query.first({
    success: function(results) {
      results.increment("times");
      results.save();
      response.success("success updated");
    },
    error: function() {
      response.error("test lookup failed");
    }
  });
});

我在android studio的调用

//Call updateTimes function at cloud code
ParseCloud.callFunctionInBackground("updateTimes", new HashMap<String, Object>(), new FunctionCallback<String>() {
            public void done(String result, ParseException e) {
                if (e == null) { //success }
            }
        });

        //Get date and time from server
        ParseQuery<ParseObject> query = ParseQuery.getQuery("Test");
        query.getInBackground("i6hmOEItvI", new GetCallback<ParseObject>() {
            public void done(ParseObject object, ParseException e) {
                if (e == null) {
                    // success
                    serverDate = object.getUpdatedAt();
                    Format formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
                    date = formatter.format(serverDate);
                    Log.d("ServerDate",date);
            }
        });

我的问题是从objectId检索的serverDate不正确。检索的日期始终是较旧的日期。但是,数据库中的updateAt字段已成功更新。 我在调用查询object.getUpdatedAt();之前调用了ParseCloud.callFunctionInBackground。 任何人都知道为什么我得到的日期不是最新的?

1 个答案:

答案 0 :(得分:2)

创建或触摸数据似乎是浪费,只是为了查看写入的日期戳。为什么不直接返回日期:

Parse.Cloud.define("serverDateTime", function(request, response) {
    response.success({dateTime: new Date()});
});