当前位置: 首页 > 知识库问答 >
问题:

如何读取多个CosmosDB文档

酆英达
2023-03-14

我一直试图弄清楚如何从特定查询中读取我的列表。如果我注释掉其中一个应用程序,get它会从一个文档数据库读取,反之亦然。如何让它同时读取我的两个查询,或者指定一个列表从一个查询中读取,另一个列表从第二个查询中读取?我尝试了第二个查询Spec,不确定这是否是要走的路。

谢谢你

我能够从上一个问题中获得帮助。连接到多个宇宙数据库文档

原始教程:https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-nodejs-application#_Toc395783181

任务列表. js中的代码

const TaskDao = require("../models/taskDao");

 class TaskList {
   /**
    * Handles the various APIs for displaying and managing tasks
    * @param {TaskDao} taskDao
    */
   constructor(taskDao,taskDao2) {
     this.taskDao = taskDao;
     this.taskDao2 = taskDao2;
   }

   async showList1(req, res) {
    const querySpec = {
      query: "SELECT * FROM root r WHERE r.List1=@List1",
      parameters: [
        {
          name: "@List1",
          value: "yes"
        }
      ]

    };

     const items = await this.taskDao2.find(querySpec);
     res.render("index", {
       title: "Form",
       tasks: items
     });

   }


   async showList2(req, res) {
    const querySpec2 = {
      query: "SELECT * FROM root r WHERE r.List2=@List2",
       parameters: [
         {
           name: "@List2",
           value: true
        }
      ]
    };

     const items = await this.taskDao.find(querySpec2);
     res.render("index", {
       title: "Form",
       tasks: items
     });

   }

   async addTask(req, res) {
     const item = req.body;

     await this.taskDao.addItem(item);
     res.redirect("/");
   }
 }

 module.exports = TaskList;

app.js中的代码

app.get('/', (req, res, next) => taskList.showList1(req, res).catch(next))
app.get('/', (req, res, next) => taskList.showList2(req, res).catch(next))

我希望这些列表读取不同的值。

共有1个答案

邹弘
2023-03-14

如果您只想将数据从两个不同的容器加载到您的HTMLselector,您应该使用res.send来发送您的数据,而不是res.render

试试下面的步骤:1。转到< code>app.js在此添加两个路线代码:

 app.get('/list1', (req, res, next) => taskList.showTasks1(req, res).catch(next))
 app.get('/list2', (req, res, next) => taskList.showTasks2(req, res).catch(next)) 

2.Go路由/tasklist.js,添加show Tasks1show Tasks2(此代码基于我之前的回答taskDao2这里需要。):

   async showTasks1(req, res) {
    const items = await this.taskDao.find("SELECT * FROM root r ");
    res.send(items);
  }
  async showTasks2(req, res) {
    const items = await this.taskDao2.find("SELECT * FROM root r ");
    res.send(items);
  }

运行此项目,您可以通过URL从两个容器中获取数据:

<代码>http://localhost:3000/list1和http://localhost:3000/list2

最后,只需要参考我第一个为你加载数据到选择器的答案。

希望能有帮助。如果你有任何进一步的问题,请随时告诉我。

 类似资料:
  • 我正在使用使用按顺序读取文件。 我想创造一个读者 从文件1读取chunksize 现在,MultiResourceItemReader的问题是,它将首先分块读取完整的文件1,当文件完成时,它将继续读取文件2。 如何创建基于块大小在文件之间切换的批处理步骤?

  • 本文向大家介绍Python fileinput模块如何逐行读取多个文件,包括了Python fileinput模块如何逐行读取多个文件的使用技巧和注意事项,需要的朋友参考一下 Python 提供了 fileinput 模块,通过该模块中的 input() 函数,我们能同时打开指定的多个文件,还可以逐个读取这些文件中的内容。 fileinput 模块中 input() 该函数的语法格式如下: fil

  • 我有一个源代码,它读取文本文件并存储到一个元组类型的向量中: 包含以下数据: 因此数据由空格+垂直线+空格(多重分隔符)分隔。 如何更改源代码以处理多个分隔符? 注意:如果数据仅用空格隔开,则程序可以工作。

  • 我想使用一个BufferedReader对象从两个或多个文件中读取文本。

  • 我已经问了同样的问题,看起来不清楚。因此,让我以不同的方式问它。我有四个.csv个名为I_earthquake2016.csv I_earthquake2017.csv I_earthquake2018.csv I_earthquake2019.csv(不同年份的地震数据)它们都有相同的列,只是行数不同。我做了一些代码来读取其中一个文件,并制作直方图以查看每个月发生多少次地震。 问题: < li

  • 以下是我的Spring批处理用例。 > 处理记录。 将处理过的记录逐一写入。 我很清楚第2步和第3步的内容,但不知道如何实现一个可以一次性读取所有记录的读卡器。如何将记录逐一传递给项目处理者/编写者?我应该使用tasklet而不是reader/writer吗?