2015-04-14 3 views
2

Я пытаюсь получить дату и время сервера Parse, но я узнаю, что единственный способ - создать или обновить объект, а затем получить значение updatedAt.Получение данных после изменения данных в облачном коде

Мой класс

// Существует только один данных/объект в этом классе

Class Test{ 
    int 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"); 
    } 
    }); 
}); 

Мой призыв на андроид студии

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

Моя проблема заключается в serverDate извлечена из ObjectId не правильно. Полученная дата всегда старше. Однако поле updateAt в базе данных успешно обновляется. Я вызывал ParseCloud.callFunctionInBackground перед вызовом object.getUpdatedAt() ;. У кого-нибудь есть идея, почему дата, которую я получаю, не самая последняя?

ответ

2

Кажется, отходы создают или касаются данных, чтобы увидеть, какая дата была написана. Почему бы не вернуть дату напрямую:

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

Спасибо. Я действительно пытался использовать 'new Date()', но результат, полученный на моем эмуляторе, был временем моего устройства. В конце концов, я подумал, что 'new Date()' получает дату с устройства. Виноват :/ – user1853149

Смежные вопросы