DocumentDb хранит procudure collection.queryDocuments не работает

Я разрабатываю систему для больших объемов данных. В настоящее время я тестирую хранимую процедуру в коллекции с менее чем 300 тыс. документов.

Я следую этому примеру: Программирование на стороне сервера DocumentDB: хранимые процедуры, база данных триггеры и определяемые пользователем функции

"createDocument" и "replaceDocument" пока работают нормально. Но queryDocuments вообще не работает, сколько бы я ни пробовал. Я пытался поместить исключение исключения во многих местах, но исключение исключения внутри callBack вообще не попадает.

Кто-нибудь успешно использовал queryDocuments() в хранимой процедуре?

function MoveTree(nodeJson, targetParentNodeJson) {
var node = JSON.parse(nodeJson);
var targetParentNode = JSON.parse(targetParentNodeJson);

var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();

var count = 0;

//<==Tried put throw exception here and it is hit
var node;
var IsAccept = collection.queryDocuments(
    collection.getSelfLink(),
    'SELECT * FROM Nodes p where p.id  = "' + nodeId + '"',
    function (err, documents, responseOptions) {
        //<==Tried put throw exception here but it is not hit
        if (err) throw new Error(err);
        if (!documents || documents.length != 1) throw new Error("Unable to find node.");
        node = documents[0];
        //<==Tried put throw exception here but it is not hit
    });
//<==Tried put throw exception here and it is hit

//... }

Скриншот кода с комментариями


person Odin    schedule 29.01.2016    source источник
comment
Переменная nodeId никогда не устанавливается. Вы имели в виду, что это targetParentNode._id? Кроме того, у вас есть два var node... объявленных в одной области. Тем не менее, я бы не подумал, что любой из них предотвратит вызов обратного вызова. Я бы подумал, что это просто выдаст ошибку «Невозможно найти узел».   -  person Larry Maccherone    schedule 30.01.2016
comment
Я имел в виду targetParentNode.id   -  person Larry Maccherone    schedule 30.01.2016
comment
Видите ли вы какие-либо сообщения об ошибках при выполнении хранимой процедуры? Если да, то какие сообщения об ошибках?   -  person Andrew Liu    schedule 02.02.2016
comment
Рабочий пример хранимой процедуры, выполняющей запрос, можно найти здесь: github.com/Azure/azure-documentdb-js-server/blob/   -  person Andrew Liu    schedule 02.02.2016
comment
Привет, извините за поздний ответ. В последнее время я был очень занят. Я понял, что все эти основные функции асинхронны, что приводит к неожиданному поведению. Следовательно, мои хранимые процедуры будут проходить через все и возвращаться задолго до того, как любая из этих основных функций завершится.   -  person Odin    schedule 04.03.2016


Ответы (1)


Как упомянул Ларри, проблема в том, что вы не установили переменную nodeId... что приводит к следующему сообщению об ошибке при запуске:

Encountered exception while executing Javascript. Exception = ReferenceError: 'nodeId' is undefined

person Andrew Liu    schedule 05.02.2016
comment
Привет, это должен быть node.Id. Моя ошибка копирования и вставки при тестировании. Но дело было не в этом. Я понял это сам. Я добавил комментарий в предыдущем. - person Odin; 04.03.2016