Кажется, нет никаких ошибок try / catch при создании cts.collectionQuery для несуществующей коллекции - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть JavaScript-запрос MarkLogic с использованием cts.collectionQuery с использованием консоли запросов.Я ищу способ определить, передана ли недопустимая (несуществующая) коллекция в запрос.Обтекание кода в блоке try / catch ничего полезного не дает и всегда возвращает результат, который кажется плохим поведением.

В следующем фрагменте значением thisCollection может быть что угодно, а запросвернет значение без ошибки.

try {
  var thisCollection = "xxxx";
  var collQuery = cts.collectionQuery(thisCollection);
  var phoneQuery = cts.jsonPropertyValueQuery("phoneNumber", number);
  var andQuery = cts.andQuery([collQuery, phoneQuery]);
  var thisCount = cts.estimate(andQuery);
  resultCount = resultCount + thisCount;
  resultString = resultString + "," + thisCount;
} catch(err) {
  resultString = "Query Error =" + err.name;
}

Я ожидаю, что передача несуществующего имени коллекции в collectionQuery вызовет какую-то ошибку.

1 Ответ

0 голосов
/ 27 декабря 2018

Это может помочь понять, что коллекции - это просто ярлыки, прикрепленные к документам.Они существуют простым использованием их в документах, и их не нужно предварительно декларировать.Именно поэтому один документ может участвовать во многих коллекциях, в отличие от того факта, что он может находиться только в одном каталоге (или пути).

Лучший способ определить, существует ли коллекция, - выполнитьcts.estimate на это:

let collectionExists = cts.estimate(collQuery) > 0;

HTH!

...