Чтение документа из DocumentDB по ID с помощью Node.js не выполняется

Я пытаюсь прочитать один документ из DocumentDB, используя идентификатор документа. Коллекция состоит из четырех полей, authorявляющихся ключом раздела.

{
  "id": string,
  "author": string,
  "title": string,
  "year": int
}

У меня есть две функции для чтения записей, хранящихся в DocumentDB. queryCollectionByBookIdсчитывает один документ по идентификатору документа и queryCollectionGetBooksвозвращает все документы в коллекции.

var dbutils = {
    queryCollectionByBookId: function(client, documentUrl) {
        return new Promise((resolve, reject) => {
            client.readDocument(documentUrl, function(err, doc) {
                if (err) {
                    reject(err);
                } else {
                    resolve(doc);
                }
            });
        });
    },
    queryCollectionGetBooks: function(client, collectionUrl) {
        return new Promise((resolve, reject) => {
            client.readDocuments(collectionUrl).toArray((err, results) => {
                if (err)
                    reject(err);
                else {
                    resolve(results);
                }
            });
        });
    }
};

queryCollectionGetBooksфункция работает нормально, но queryCollectionByBookIdвозвращает сообщение об ошибке ниже.

{"Errors":["The partition key supplied in x-ms-partitionkey header has fewer components than defined in the the collection."]}

Кто-нибудь еще видел это сообщение об ошибке и выяснил, как его решить?

javascript,node.js,azure-cosmosdb,

1

Ответов: 1


4 принят

Это надзор в документации для node.js-клиента, но вы должны добавить options.partitionKeyсвойство к необязательному второму параметру в своем readDocument(link, options, callback)вызове.

Это также является надзором в документах, но я думаю, что partitionKey должен быть массивом с одним элементом (например, {options: {partitionKey: ["myKey"]}}[UPDATE: мне сказали, что теперь он будет работать с одним значением ключа раздела, но я сам его не подтвердил.]

Кроме того, вы можете установить options.enableCrossPartitionQueryсвойство, trueно это менее эффективно.

JavaScript, Node.js, лазурь-cosmosdb,
Похожие вопросы