#node.js #couchdb #cradle
#node.js #couchdb #cradle
Вопрос:
Вопрос для начинающих.
Ниже приведен пример, приведенный в документации Cradle CouchDB:https://github.com/cloudhead/cradle
Что такое 5984?
new(cradle.Connection)('http://living-room.couch', 5984, {
cache: true,
raw: false
});
Я пытаюсь получить информацию из моего couchdb:
url: subdomain.mywebsite.com
порт узла: 12345
порт couchdb: 67891
Я пробовал разные способы подключения, используя приведенный выше код, но я получаю приведенную ниже ошибку.
Каков правильный способ подключения?
17 May 09:50:57 - [nodemon] restarting due to changes...
17 May 09:50:57 - [nodemon] ./test_couch.js
17 May 09:50:57 - [nodemon] starting node
Server running somewhere
request starting...
request starting...
node.js:181
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: ECONNREFUSED, Connection refused
at Socket._onConnect (net.js:602:18)
at IOWatcher.onWritable [as callback] (net.js:186:12)
17 May 09:51:05 - [nodemon] app crashed - waiting for file change before starting...
Комментарии:
1. Вы пробовали использовать ip-адрес?
Ответ №1:
Из той же документации, на которую вы разместили ссылку, но только в папке code здесь, в этом файле JShttps://github.com/cloudhead/cradle/blob/master/lib/cradle.js
cradle.Connection = function Connection(/* variable args */) {
var args = Array.prototype.slice.call(arguments),
host, port, remote, auth, options = {};
args.forEach(function (a) {
if (typeof(a) === 'number' || (typeof(a) === 'string' amp;amp; /^d{2,5}$/.test(a))) {
port = parseInt(a);
} else if (typeof(a) === 'object') {
options = a;
host = host || options.host;
port = port || options.port;
auth = options.auth;
} else {
host = a;
}
});
Таким образом, он принимает любые параметры, которые вы ему задаете, и преобразует их в массив.
Что такое 5984?
Это порт для подключения, о чем свидетельствует этот фрагмент кода, которым я поделился.
Он принимает действительно три типа параметров, номер порта (длиной от 2 до 5 цифр), строку и объект для настройки.
Вы могли бы предоставить только один объект и объявить его части следующим образом:
new(cradle.Connection)({
host: 'http://living-room.couch',
port: 67891,
cache: true,
raw: false
});
и это будет работать так же
Комментарии:
1. Потрясающе, спасибо! Должен ли порт быть тем, которому я назначил node.js или CouchDB?
2. Поскольку вы (предположительно) настраиваете couch изнутри узла , я бы предложил couchdb. Однако, если вы применяли магию ниндзя и делали один экземпляр nodejs сервером couch для другого nodejs, и вы имитировали интерфейс couch из вторичного экземпляра nodejs, тогда да, порт nodejs. Но я сомневаюсь в этом (по многим причинам). TL;DR: couchdb
3. Я использую хостинг webfaction, и они попросили меня настроить его определенным образом: создать то, что они называют «приложением» (в их панели управления хостингом) для node.js amp; couchdb. Также создайте подкаталог для каждого и назначьте приложение. Итак, у каждого приложения есть свой собственный поддомен и порт.
4. Да, как я уже говорил в моем tl; dr: используйте порт couchdb, который вы назначили в этой штуке app-host-panel
5. Наконец-то у меня это заработало! Я использовал ваш фрагмент кода, но удалил элемент host «host: ‘ living-room.couch ‘» (по какой-то причине вызывает ошибку «документ не определен»).