Cradle CouchDB, Что такое cradle.Аргументы функции подключения?

#node.js #couchdb #cradle

#node.js #couchdb #cradle

Вопрос:

Вопрос для начинающих.

Ниже приведен пример, приведенный в документации Cradle CouchDB:https://github.com/cloudhead/cradle

Что http://living-room.couch?

Что такое 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 ‘» (по какой-то причине вызывает ошибку «документ не определен»).