2016-01-20 4 views
3

Я немного смущен о couchdb/pouchdb.Couchdb и pouchdb не сохраняют информацию в том же месте

Вот мои настройки.

Я запускаю couchdb, чтобы запустить его.

Чтобы подтвердить это, curl localhost:5984, и он работает.

Перейдите http://localhost:5984/_utils/index.html и увидеть это:

couchdb-admin

Затем я использую node и pouchdb для подключения и вставить документ.

var PouchDB = require('pouchdb') 
var test = new PouchDB('test') 

test.info() 
.then(function (info) { 
    console.log(info) 
}) 
.catch(console.error) 

test.put({ 
    '_id': '308', 
    'hello': 'world' 
}) 
.then(console.log) 
.catch(console.error) 

я запускаю этот node index.js и получить ответ ОК для обоих.

Я проверяю couchdb admin (см. Выше) и вижу, что он не изменился. Кажется, данные не были сохранены.

Я смотрю в каталоге проектов узлов и вижу папку test. Должна быть какая-то проблема, когда мешочек считает, что каталог базы данных является локальным, а каталог couchdb - в другом месте.

Чтобы выяснить, где кушетка хранения информации я бегу couchdb -c

$ couchdb -c 
/usr/local/etc/couchdb/default.ini 
/usr/local/etc/couchdb/local.ini 

Который дает мне расположение конфигурационных файлов.

я могу видеть в default.ini этом:

database_dir = /usr/local/var/lib/couchdb 
view_index_dir = /usr/local/var/lib/couchdb 

Я не понимаю, как и почему эта связь между тем, где couchdb думает дб и где pouchdb думает, что это, по-другому.

Как это исправить, и сделать pouchdb использовать каталог, указанный для couchdb?

Update:

Только что попробовал это, и я до сих пор не вижу в интерфейсе couchdb.

var PouchDB = require('pouchdb') 

// var test = new PouchDB('test') 

var MyPrefixedPouch = PouchDB.defaults({ 
    prefix: '/usr/local/var/lib/couchdb' 
}); 

var test = new MyPrefixedPouch('test'); 

test.info().then(function (info) { 
    console.log(info) 
}) 

test.put({ 
    '_id': '308', 
    'hello': 'world' 
}) 
.then(console.log) 
.catch(console.error) 

ответ

4

Я не думаю, что вы поняли способ работы pouchdb. Когда вы запускаете его в узле так, как вы, он использует leveldb в качестве бэкэнд. Он записывает файл данных в тестовый каталог вашего проекта (интересно, что будет, если бы у вас были тесты!).

Он не разговаривает с вашим сервером couchbase вообще.

Если передать Ури на свой диван сервер в конструкторе, вы будете говорить к экземпляру couchbase:

var remoteDB = new PouchDB('http://localhost:5984/myremotedb') 
+0

Awesome, спасибо так много, совершенного объяснения. Я думал, что он автоматически подключается к серверу localhost. – ThomasReggi

+0

@ThomasReggi PouchDB может работать без экземпляра couchdb, когда вы настраиваете его таким образом, он позволит ему синхронизироваться с couchdb, но технически pouchdb - это сервер couchdb в javascript. –

Смежные вопросы