Запрос БД Cosmos с использованием JavaScript API v2 для 1 документа
У меня есть цепочка асинхронных вызовов, которая выглядит следующим образом:
getConnections()
.then(() => addOneNewDoc())
.then(() => fetchOneDoc());
AddNewDoc() работает нормально и вставляет документ. Затем я использую возможности запроса API для запроса документа в fetchOneDoc().
Вызов для извлечения doc всегда возвращает undefined, но я могу посмотреть документ в браузере db портала. Я пробовал спать между вызовами на тот случай, если док просто не дошел до запроса, но это тоже не сработало.
const query = `select * from items i where i.id = '${docId}'`;
const {result: doc} = await connection.container.items.query(query);
if (!doc) {
console.log('GOT NO DOCS BACK');
return;
}
Я проверил запрос отлично работает на портале.
1 ответ
Пожалуйста, обратитесь к моему примеру кода:
const cosmos = require('@azure/cosmos');
const CosmosClient = cosmos.CosmosClient;
const endpoint = "https://***.documents.azure.com:443/"; // Add your endpoint
const masterKey = "***"; // Add the masterkey of the endpoint
const client = new CosmosClient({ endpoint, auth: { masterKey } });
const databaseId = "db";
const containerId = "coll";
async function run() {
await insertItem();
}
async function insertItem(continuationToken) {
const { container, database } = await init();
const documentDefinition = { content: 'Hello World!' };
const { body } = await container.items.create(documentDefinition);
console.log('Created item with content: ', body.id);
return await queryItems1(body.id);
}
async function queryItems1(idParam) {
const { container, database } = await init();
const querySpec = {
query: "SELECT r.id,r._ts FROM root r where r.id = '"+ idParam +"'"
};
const queryIterator = await container.items.query(querySpec,null);
if (queryIterator.hasMoreResults()) {
const { result: results, headers } = await queryIterator.executeNext();
console.log(results)
}
}
async function init() {
const { database } = await client.databases.createIfNotExists({ id: databaseId });
const { container } = await database.containers.createIfNotExists({ id: containerId });
return { database, container };
}
run().catch(err => {
console.error(err);
});
Надеюсь, это поможет вам.