lib в представлениях при использовании сервера запросов couchdb - PullRequest
0 голосов
/ 26 сентября 2018

Я создал пользовательский сервер запросов для пользовательского языка запросов.

Я пытался создать документ проекта с представлениями map/reduce.

В этих map/reduce функциях(что наиболее важно в функции карты) Я хочу иметь возможность ссылаться на код библиотеки.

Я вижу, что есть узел lib, который можно добавить в проектный документ.

Я ожидаю, что сервер пользовательских запросов получит сообщение add_lib от CouchDB, но я еще никогда не видел этого.Сообщения

http://docs.couchdb.org/en/stable/query-server/protocol.html#add-lib

add_fun не выполняются для кода, который зависит от библиотеки на сервере запросов, поскольку сообщение add_lib еще не было получено заранее.

"Сервер запросов должен анализировать, компилировать и оценивать функцию, которую он получает, чтобы сделать ее вызываемой позже."

http://docs.couchdb.org/en/stable/query-server/protocol.html#add-fun

Посколькуadd_fun не удается, это означает, что я не могу сохранить проектный документ.

Я просмотрел следующие страницы, но все еще не добился успеха:

Как добавить моментБиблиотека .js в Cloudant NoSQL Design Doc на Bluemix

Как СУШИТЬ мои просмотры CouchDB?

https://www.oreilly.com/library/view/couchdb-the-definitive/9780596158156/ch05.html

IЯ делаю что-то не так или сделал ошибку, кажется, ваша помощь очень ценится.

1 Ответ

0 голосов
/ 26 сентября 2018

На следующем веб-сайте есть правильный способ поместить библиотеку в представление.

https://caolan.org/posts/commonjs_modules_in_couchdb.html

Вот новый пример для вымышленного языка, который основан на рабочем.

{
  "_id": "_design/example",
  "language": "customlang",
  "views": {
    "lib": {
      "math": "pi = 3.14"
    },
    "map_everything_to_pi": {
      "map": "imports math; pi"
    }
  }
}

Моя проблема возникла из-за того, что я не смог сохранить проектный документ, когда у меня был код в функции карты, зависящей от библиотеки.

Благодаря настройке функции карты, чтобы она не зависела от библиотекиТеперь я смог сохранить документ и после запроса представления я стал свидетелем того, как сообщение add_lib было отправлено на сервер запросов.

В CouchhDB 2.2.0 add_lib отправляется, когда представление запрашивается, но несразу после сохранения проектного документа, где вызывается add_fun.На мой взгляд, add_lib должен вызываться раньше для каждой библиотеки перед тем, как CouchDB отправит сообщения add_fun.

Этот факт делает невозможным для add_fun оценку / прекомпиляцию кода, поскольку библиотека еще не известна.add_lib должен успешно завершиться, чтобы проектный документ был сохранен, поэтому проектный документ невозможно сохранить.

Возможно, мне нужно поднять проблему с трекером ошибок.

...