2016-01-20 153 views
3

我有點困惑有關couchdb/pouchdb。Couchdb和pouchdb不存儲信息在同一個地方

這是我的設置。

我正在運行couchdb以啓動並運行它。

確認我運行這個,curl localhost:5984,它的工作原理。

導航到http://localhost:5984/_utils/index.html看到這一點:

couchdb-admin

然後我用nodepouchdb連接並插入文檔。

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管理員(上面),看看它沒有改變。似乎沒有數據被保存。

我查看節點項目目錄,看到有一個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認爲DB是何pouchdb認爲這是,不同之間的這種聯繫。

我該如何解決這個問題,並使pouchdb使用couchdb指定的目錄?

更新:

只是嘗試這樣做,我仍然沒有看到它在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服務器通話。

如果您通過URI來你的沙發服務器在構造函數中,你會跟你couchbase實例:

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

真棒,太感謝你了,完美的解釋。我認爲它會自動連接到本地主機服務器。 – ThomasReggi

+0

@ThomasReggi PouchDB可以在沒有任何couchdb實例的情況下工作,當您以這種方式配置它時,它將允許它與couchdb同步,但技術上pouchdb本身就是一個javascript中的couchdb服務器。 –