Запрос БД Cosmos с использованием JavaScript API v2 для 1 документа - PullRequest
0 голосов
/ 28 октября 2018

У меня есть цепочка асинхронных вызовов, которая выглядит следующим образом:

getConnections()
  .then(() => addOneNewDoc())
  .then(() => fetchOneDoc());

addNewDoc () работает нормально и вставляет документ.Затем я использую возможности API-запросов для запроса документа в fetchOneDoc ().

Вызов fetch doc всегда возвращает undefined, но я могу просмотреть документ в браузере БД портала.Я пробовал спать между вызовами на тот случай, если документ просто не успел до запроса, но это тоже не сработало.

  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 Ответ

0 голосов
/ 29 октября 2018

Пожалуйста, обратитесь к моему примеру кода:

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);
});

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

...