我正在尝试按照Parse的文档/示例在后台作业中运行查询。我想要做的是查询数据库中的所有User
,并对与matchCenterItem
相关联的User
运行查询。
当我运行此作业时,它会记录status.success
,但不会超过console.log('about to start the matchCenterItem query');
。
query.find().then(function(results)
从未运行,让我觉得我要么错误地构造matchCenterItem
查询,要么不以正确的方式查询每个User
。我只发布了相关的代码片段以保持简洁,但如果需要,我很乐意发布后台作业的整个代码。
Parse.Cloud.job("MatchCenterBackground", function(request, status) {
//Parse.Cloud.useMasterKey();
console.log('background task started');
//defines which parse class to iterate through
//Query through all users
var usersQuery = new Parse.Query(Parse.User);
//For every user, do the following:
usersQuery.each(function(user) {
//query through all their matchCenterItems
var matchCenterItem = Parse.Object.extend("matchCenterItem");
var query = new Parse.Query(matchCenterItem);
// promise and searchterm arrays to be filled
var promises = [];
var searchTerms = [];
//setting the limit of items at 10 for now
query.limit(10);
console.log('about to start the matchCenterItem query');
query.find().then(function(results) {
console.log('matchCenterItem query results:' + results);
if (results.length > 0){
//code cut off here
答案 0 :(得分:2)
好的,这是很多代码并且深深嵌套。
从我所看到的,您需要返回两个当前未被返回的承诺
27: return query.find().then(function(results) {
104: return Parse.Promise.when(promises).then(function(results) {
此外,你有两个底部的承诺,应该与then()
链接在一起,或与Parse.Promise.when
平行。无论哪种情况,结果都需要返回。
232: newMComparisonArray.save({
244: mComparisonQuery.find({
所以代码的问题只与创建的promises有关,但没有等待。每当你创建一个承诺时,你应该考虑谁在听取完成的承诺,并确保将承诺返回给听众。