API хранимых процедур API-интерфейса Azure CosmosDB - PullRequest
0 голосов
/ 08 марта 2019

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

const client = new CosmosClient({ endpoint: endpoint, auth: { 
masterKey: masterKey } });
const container = 
client.database(databaseName).container(containerName);
const sprocId = "listEntries";
const procedure = require(`./${sprocId}`)

container.storedProcedure(sprocId).replace({
  body: procedure
}).catch(response => {
  if (response.code === 404) {
    console.log("No existe, la creamos");
    container.storedProcedures.create({
      id: sprocId,
      body: procedure
    });
  } else {
    console.error(response);
  }
}).then(response => console.log("updated!"));

Моя процедура - это пример процедуры по умолчанию для перечисления элементов:

function listEntries(prefix) {
    var collection = getContext().getCollection();

    // Query documents and take 1st item.
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT * FROM root r',
        function (err, feed, options) {
            if (err) throw err;
            if (!feed || !feed.length) {
                var response = getContext().getResponse();
                response.setBody('no docs found');
            }
            else {
                var response = getContext().getResponse();
                var body = { prefix: prefix, feed: feed[0] };
                response.setBody(JSON.stringify(body));
            }
        });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}
module.exports = listEntries;

Когда еще не созданы хранимые процедуры, этот код работает нормально (это означает, что .replace работает нормально и отвечает 404 не найден, а затем метод .create работает нормально). Если я захожу на портал Azure, я вижу свою процедуру и выполняю ее без проблем.

Проблема возникает при создании процедуры. Этот код должен использовать метод .replace для обновления функции, но вместо этого метод отвечает:

{ code: 500,
  body: '{"code":"InternalServerError","message":"Unknown server error occurred when processing this request.\\r\\nActivityId: f323289c-b143-449e-9d50-e2eb8c374e82, Microsoft.Azure.Documents.Common/2.2.0.0"}',
  headers:
   { 'transfer-encoding': 'chunked',
     'content-type': 'application/json',
     'content-location': 'https://testingresourcefromscript-southcentralus.documents.azure.com/dbs/TestingDataBaseFromScript/colls/Entry/sprocs/listEntries',
     server: 'Microsoft-HTTPAPI/2.0',
     'x-ms-activity-id': 'f323289c-b143-449e-9d50-e2eb8c374e82',
     'strict-transport-security': 'max-age=31536000',
     'x-ms-gatewayversion': 'version=2.2.0.0',
     date: 'Fri, 08 Mar 2019 14:46:29 GMT',
     'x-ms-throttle-retry-count': 0,
     'x-ms-throttle-retry-wait-time-ms': 0 },
  activityId: 'f323289c-b143-449e-9d50-e2eb8c374e82' }

Понятия не имею, что происходит, потому что это, кажется, общая ошибка: (

Спасибо за вашу помощь заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...