使用 Promises 解析云代码的多个查询

Multiple Queries with Parse Cloud Code Using Promises

我有两个问题:

  1. 以下示例是否是在单个 Cloud Code 函数中执行多个 Parse 查询的正确方法?
  2. 下面的示例是否会提供我使用 一个 HTTP 请求(当我调用 logbookEntries 时)查询的所有数据,然后算作 两个 我的帐户上的解析请求,因为它是两个解析查询?

代码如下:

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);

  });
});

提前致谢。

  1. 这是一种方式,虽然不太正确。

你的代码应该是:

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);
});

});

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

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);
});

}

只是为了更新 Wain 的结构化代码: Promise.when returns 数组,当提供一个数组时,所以正确的代码是

Parse.Promise.when(promises).then(function([result1, result2]) {

并且由于不需要重新打包数组,它只是

Parse.Promise.when(promises).then(function(result) {
   response.success(result);

See here 了解更多信息。