gpt4 book ai didi

javascript - 解析云代码提前结束?

转载 作者:行者123 更新时间:2023-12-03 11:28:08 25 4
gpt4 key购买 nike

我正在编写一项工作,希望每小时在 Parse 后台运行一次。我的数据库有两个表。第一个包含 Question 列表,而第二个则列出所有用户\问题协议(protocol)对 (QuestionAgreement)。最初我的计划只是让客户端计算 QuestionAgreement 本身,但我发现这会导致很多确实可以取消的请求,所以我希望这个后台作业运行计数,然后用它直接更新 Question 上的字段。

这是我的尝试:

Parse.Cloud.job("updateQuestionAgreementCounts", function(request, status) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query("Question");
query.each(function(question) {
var agreementQuery = new Parse.Query("QuestionAgreement");
agreementQuery.equalTo("question", question);
agreementQuery.count({
success: function(count) {
question.set("agreementCount", count);
question.save(null, null);
}
});
}).then(function() {
status.success("Finished updating Question Agreement Counts.");
}, function(error) {
status.error("Failed to update Question Agreement Counts.")
});
});

问题是,这似乎只在几个 Question 上运行,然后它停止,在 Parse Dashboard 的“作业状态”部分中显示为“成功”。我怀疑问题在于它过早地回归了。这是我的问题:

1 - 我怎样才能防止它过早返回? (假设这实际上是我的问题。)

2 - 调试云代码的最佳方法是什么?由于这不是客户端,所以我没有任何方法设置断点或其他任何东西,是吗?

最佳答案

status.successcount 的异步成功调用完成之前调用。为了防止这种情况,您可以在此处使用 promise 。检查文档 Parse.Query.each

Iterates over each result of a query, calling a callback for each one. If the callback returns a promise, the iteration will not continue until that promise has been fulfilled.

因此,您可以链接 count promise :

agreementQuery.count().then(function () {
question.set("agreementCount", count);
question.save(null, null);
});

您还可以使用parallel promises使其更加高效。

云代码中没有断点,这使得 Parse 很难使用。唯一的方法是使用 console.log

记录变量

关于javascript - 解析云代码提前结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26836278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com