backbone.js 使用承诺解析云代码的多个查询

dl5txlt9  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(157)

我有两个问题:
1.下面的示例是否是在单个云代码函数中执行多个解析查询的正确方法?
1.下面的示例是否将使用一个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);

  });
});

先谢谢你。

k5ifujac

k5ifujac1#

1.这是一种方式,虽然不完全正确。
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);
});

}
5lhxktic

5lhxktic2#

更新一下Wain的结构化代码:当提供数组时,Promise.when返回数组,因此正确的代码应该是

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

并且由于不需要重新打包阵列,因此只需

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

请参阅此处了解更多信息。

相关问题