【问题标题】:Multiple queries in documentdb-q-promises for NodejsNodejs 的 documentdb-q-promises 中的多个查询
【发布时间】:2019-01-06 23:59:25
【问题描述】:

我想使用 documentdb 呈现一个页面,获取 CosmoDB 中两个不同查询的信息。

我有 2 个查询:

var FirstQuery = {
  query: 'SELECT * FROM FactoryData',
};

var SecondQuery = {
  query: 'SELECT * FROM StoreData',
};

并且有这个来获取数据

 docDbClient.queryDocuments(collLink, FirstQuery ).toArray(function (err, results) {
    value1 = results;
  });

docDbClient.queryDocuments(collLink, SecondQuery ).toArray(function (err, results) {
    value2 = results;
  });

然后我想用这些结果渲染视图,但我无法从这个函数的外部渲染它。

res.render('view.html', {"value1" : value1 , "value2" : value2});

我知道这段代码行不通,但我正在尝试实现承诺,但不知道如何使用 documentdb-q-promises 来实现。

我已经阅读了很多关于 Q Promise 的文档,但我不明白。 谁能给我解释一下,我是初学者。

【问题讨论】:

    标签: node.js azure-cosmosdb


    【解决方案1】:

    根据您的要求,我按照npm docgithub 上的测试代码在我的本地快递项目中测试以下代码。请参考。

    var express = require('express');
    var router = express.Router();
    
    var DocumentClient = require('documentdb-q-promises').DocumentClientWrapper;
    
    var host = 'https://***.documents.azure.com:443/';                    // Add your endpoint
    var masterKey = '***'; // Add the massterkey of the endpoint
    
    var client = new DocumentClient(host, {masterKey: masterKey});
    
    var collLink1 = 'dbs/db/colls/import';
    var FirstQuery = 'select c.id,c.name from c';
    var collLink2 = 'dbs/db/colls/item';
    
    var returnArray = [];
    
    client.queryDocuments(collLink1, FirstQuery).toArrayAsync().
      then(function(response){
      console.log(response.feed);
      var map = {};
      map['value1'] = response.feed;
      returnArray.push(map);
      return client.queryDocuments(collLink2, FirstQuery).toArrayAsync()
    })
    .then(function(response) {
      console.log(response.feed);
      var map = {};
      map['value2'] = response.feed;
      returnArray.push(map); 
    })
    .fail(function(error) {
      console.log("An error occured", error);
    });
    
    router.get('/', function(req, res, next) {
      res.send(returnArray);
    });
    
    module.exports = router;
    

    测试结果:

    希望对你有所帮助。

    【讨论】:

    • 谢谢,工作完美,现在我对承诺非常了解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多