У меня есть приложение Parse Server, размещенное на back4app, и я запускаю фоновое задание, которое запускается каждую минуту и запрашивает класс Letters
, где столбец deliveryDate
меньше или равен текущемудата, вот мой main.js файл:
// DELIVER A LETTER
Parse.Cloud.job("deliverLetter", function (request, status) {
var now = new Date();
// var nowTime = date.getTime();
var Letters = Parse.Object.extend("Letters");
var query = new Parse.Query(Letters);
query.lessThanOrEqualTo("deliveryDate", now);
query.find().then (function (objects) {
objects.forEach(function (obj) {
obj.set("isDelivered", true);
Parse.Cloud.useMasterKey();
obj.save(null, { useMasterKey: true } ).then(function(obj) {
response.success(obj);
}, function(error) {
response.error(error)
});
});
});
Так, например, я сохраняю строку в классе Letters, где deliveryDate
установлено вчера, для менячтобы проверить эту функцию облачного кода.Есть еще один столбец с именем isDelivered
, и он имеет значение False.Итак, моя функция выше должна установить isDelivered
в True и обновить объект Letters
.
Но это не работает, поэтому я не знаю, что я делаю неправильно.
Редактировать
Благодаря danh
я исправил свой код следующим образом:
var Letters = Parse.Object.extend("Letters");
var query = new Parse.Query(Letters);
query.lessThanOrEqualTo("deliveryDate", now);
query.equalTo("isDelivered", false);
query.find().then (function (objects) {
let savePromises = objects.map(function (obj) {
obj.set("isDelivered", true);
return obj.save(null, { useMasterKey: true } );
});
Promise.all(savePromises).then(function(obj) {
response.success(obj);
}, function(error) {
response.error(error)
});
});
Мне нужно вызвать другую функцию из моего файла main.js, которыйотправляет push-уведомления и нуждается в некоторых параметрах.Обычно я вызываю его из своего приложения, как бы я вызвал его из этой функции?
Parse.Cloud.define("pushiOS", function(request, response) {
var user = request.user;
var params = request.params;
var userObjectID = params.userObjectID
var data = params.data
var recipientUser = new Parse.User();
recipientUser.id = userObjectID;
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo("userID", userObjectID);
Parse.Push.send({
where: pushQuery,
data: data
}, { success: function() {
console.log("#### PUSH SENT!");
}, error: function(error) {
console.log("#### PUSH ERROR: " + error.message);
}, useMasterKey: true});
response.success('success');
});
Может быть, в Promise.all ()?
Promise.all(savePromises).then(function(obj) {
response.success(obj);
Parse.Cloud.define("pushiOS"...
}, function(error) {
response.error(error)
});