Запрос БД 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);
});

Надеюсь, это поможет вам.

Другие вопросы по тегам