【发布时间】:2019-12-25 16:14:32
【问题描述】:
我一直在试图弄清楚如何让我的列表从特定查询中读取。如果我注释掉其中一个 app.get 它从一个 DocumentDB 中读取,反之亦然。如何让它同时读取我的两个查询或指定一个列表从一个查询中读取,而另一个列表从第二个查询中读取?我尝试了第二个 querySpec,但不确定这是否可行。
谢谢
我能够从上一个问题中获得帮助。 Connecting to multiple CosmosDB documents
原教程: https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-nodejs-application#_Toc395783181
tasklist.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))
我希望这些列表读取不同的值。
【问题讨论】:
-
我不太清楚你想要什么。用户是否会在 List1 中选择一个选项,而 List2 是否会根据用户在 List1 中选择的内容从另一个集合中加载选项?
-
我想从一个 DocumentDB 中读取一个列表,从另一个 DocumentDB 中读取第二个列表。集合不必基于先前的选择。所以每个列表都会有自己的查询。
-
您好,我的回答解决了您的问题吗?
-
有没有办法做这样的事情?
async find(querySpec, querySpec2) { debug('Querying for items from the database') if (!this.container) { throw new Error('Collection is not initialized.') } const { resources } = await this.container.items.query(querySpec,querySpec2).fetchAll() return resources } -
嗨@williswin,如果我的回答对您有帮助,请将其标记为答案。对于您的进一步查询,请发布一个新问题,我会在第一时间为您提供帮助。顺便说一句,请在您的新查询中具体说明,以便我可以有效地为您提供帮助。谢谢!
标签: azure-cosmosdb