У меня есть класс Stats
, который содержит столбцы secondsPlayed
(число), createdAt
(дата) и timeScore
(число)
Этот класс содержит тысячи объектов, но timeScore
столбец пуст.
Я хочу заполнить столбец timeScore
формулой, используя столбцы secondsPlayed
(число), createdAt
(дата), как это было бы в Excel.Формула:
(secondsPlayed*10^8)/(Date.now()-createdAt.getTime())
Как видите, значения столбца timeScore
должны меняться каждую секунду, поскольку Date.now()
и secondsPlayed
- переменные, которые постоянно меняются.
Из-за этого я хочу обновлять и заполнять столбец timeScore
каждые 5 минут.Это должно произойти автоматически.
Каков наилучший способ сделать это?Я подумал, что использование облачного кода для вычисления и заполнения столбца timeScore
, а затем просто получить список timeScore
с простым запросом Parse будет лучше, чем загрузка тысяч объектов на каждое устройство и вычисление и обновление каждые 5 минут на стороне клиента.
Я не знаю много о написании облачного кода, но прочитав это руководство и этот вопрос SO Я придумал следующий код.
const _ = require("underscore");
Parse.Cloud.define("timeScore", function(request, response) {
const query = new Parse.Query("Stats");
const maxSeconds = (Date.now() - new Date('2017-12-12T06:00:04.022Z').getTime())/1000;
query.lessThan("secondsPlayed", maxSeconds);
query.find().then(function(results) => {
_.each(results, function(result) {
var secondsPlayed = result.get("secondsPlayed") || 0;
var createdAt = result.get("createdAt") || new Date('2017-12-12T06:00:04.022Z');
result.set("timeScore", (secondsPlayed*100000000)/(Date.now()-createdAt.getTime()));
});
return Parse.Object.saveAll(results);
}).then(function(results) {
response.success(results);
}, function(error) {
response.error(error);
})
.catch(() => {
response.error("FAILED");
});
});
Я не знаю, что делать с этим кодом.Я не знаю, как это проверить или даже если это работает.Как мне поступить?
Нужно ли звонить из приложения xamarin?Мне просто нужно, чтобы столбец заполнялся и обновлялся каждые 5 минут в соответствии с кодом.Мне не нужно вызывать облачный код из приложения.Я просто хочу запросить столбец timeScore
из приложения.Это возможно?