【发布时间】:2018-10-12 06:22:13
【问题描述】:
我有一个托管在 back4app 上的 Parse Server 应用程序,我正在运行一个每分钟运行一次的后台作业,并查询 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 设置为昨天,以便我测试此 Cloud Code 功能。还有另一列名为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 文件中调用另一个函数,该函数发送推送通知并需要一些参数。我通常从我的应用程序中调用它,我将如何从上述函数中调用它?
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)
});
【问题讨论】:
标签: javascript parse-server parse-cloud-code