使用 Promise 通过 Parse Cloud 代码进行多个查询

Cli*_*rum 2 backbone.js parse-platform parse-cloud-code

我有两个问题:

  1. 下面的示例是在单个 Cloud Code 函数中执行多个 Parse 查询的正确方法吗?
  2. 下面的示例是否将通过一个HTTP 请求(当我调用)提供我正在查询的所有数据logbookEntries,然后将其计为我帐户上的两个Parse 请求,因为它是两个 Parse 查询?

这是代码:

Parse.Cloud.define("logbookEntries", function(request, response) {

  //::: Query 1 :::
  var firstQuery = new Parse.Query("Logbook");
  var returnData = []; 

  firstQuery.find().then(function(firstResults) {
    returnData[0] = firstResults; 

  }).then(function(result) {  

    //::: Query 2 :::
    var secondQuery = new Parse.Query("Logbook"); 
    secondQuery.find().then(function(secondResults))
    returnData[1] = secondResults; 

  }).then(function(result) {
    response.success(returnData);

  }, function(error) {
    response.error(error);

  });
});
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Wai*_*ain 5

  1. 这是一种方法,尽管不完全正确。
  2. 是的

你的代码实际上应该是:

Parse.Cloud.define("logbookEntries", function(request, response) {

//::: Query 1 :::
var firstQuery = new Parse.Query("Logbook");
var returnData = []; 

firstQuery.find().then(function(firstResults) {
   returnData[0] = firstResults; 

   var secondQuery = new Parse.Query("Logbook"); 
   return secondQuery.find();
}).then(function(result) {
   returnData[1] = result; 

   response.success(returnData);

}, function(error) {
   response.error(error);
});

});
Run Code Online (Sandbox Code Playgroud)

或者,更好的结构方式是:

Parse.Cloud.define("logbookEntries", function(request, response) {

var firstQuery = new Parse.Query("Logbook");
var secondQuery = new Parse.Query("Logbook");

var promises = [];
promises.push(firstQuery.find());
promises.push(secondQuery.find());

Parse.Promise.when(promises).then(function(result1, result2) {
   var returnData = [];
   returnData[1] = result1; 
   returnData[2] = result2; 

   response.success(returnData);

}, function(error) {
   response.error(error);
});

}
Run Code Online (Sandbox Code Playgroud)