Как назначить PartitionKey запросам CosmosDB, используя Node.js SDK v3.5.2 - PullRequest
1 голос
/ 07 января 2020

Я обновил CosmosDB Node.js SDK с 2.1.5 до 3.5.2, и следующий код больше не работает.

client.items.query(myQuery, { partitionKey: "MyPartitionKey" }).toArray()

Я изменил код на следующий, но он все еще не переносится ( машинописный текст), и, очевидно, причина в том, что FeedOptions больше не содержит partitionKey свойство!

client.items.query(myQuery,{ partitionKey: "MyPartitionKey" }).fetchAll()

Я искал его в inte rnet, но не смог найти обновленный пример.

Есть идеи, как это исправить?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Оказывается, в v3 sdk нет необходимости явно присваивать значение partitionkey. Если partitionkey участвует в предложении where, оно будет автоматически рассмотрено.

ссылка на выпуск githib

1 голос
/ 08 января 2020

Я не могу найти ни одного актуального примера из исходного кода MS или github, который действительно сложен.

Нет никакого свойства partitionkey в классе FeedOptions в узле cosmos db sdk v3 После моего глубокого изучения исходного кода github FeedOptions я обнаружил, что он расширяет другой интерфейс SharedOptions:

enter image description here

И он содержит свойство initialHeaders, поэтому предполагается, что мы можем установить значение ключа раздела, следуя REST API Header Lists .

enter image description here

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

const feedOptions = {
        initialHeaders: {"x-ms-documentdb-partitionkey": '["a"]'}
      };
   const queryIterator = await container.items.query(querySpec,feedOptions);
    while (queryIterator.hasMoreResults()) {
        console.log(await queryIterator.fetchNext());
    }

Конечно, вы можете заменить его методом .fetchAll().

...