Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 使用Promises解析云代码的多个查询_Backbone.js_Parse Platform_Parse Cloud Code - Fatal编程技术网

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

Backbone.js 使用Promises解析云代码的多个查询,backbone.js,parse-platform,parse-cloud-code,Backbone.js,Parse Platform,Parse Cloud Code,我有两个问题: 下面的示例是在单个云代码函数中执行多个解析查询的正确方法吗 下面的示例是否将使用oneHTTP请求(当我调用logbookEntries时)提供我正在查询的所有数据,然后在我的帐户上计算为two解析请求,因为这是两个解析查询 代码如下: Parse.Cloud.define("logbookEntries", function(request, response) { //::: Query 1 ::: var firstQuery = new Parse.Query(

我有两个问题:

  • 下面的示例是在单个云代码函数中执行多个解析查询的正确方法吗
  • 下面的示例是否将使用oneHTTP请求(当我调用
    logbookEntries
    时)提供我正在查询的所有数据,然后在我的帐户上计算为two解析请求,因为这是两个解析查询
  • 代码如下:

    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);
    
      });
    });
    
    提前谢谢

  • 这是一种方法,虽然不完全正确
  • 您的代码应该是:

    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返回数组,因此正确的代码应该是

    Parse.Promise.when(promises).then(function([result1, result2]) {
    
    由于不需要重新打包数组,因此只需

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

    更多信息。

    第二个示例非常简单——谢谢!我在Parse Promise docs()中没有看到
    wait
    方法,但我假设它的意思是“在两个承诺都实现之前不要发送响应”。对不起,输入错误,当有意义时应该是
    。再次感谢。