2015-06-12 66 views
0

我在一個應用程序中使用了pouchDB,現在我想介紹couchDB將文檔同步到遠程服務器。因此我也跟着此鏈接http://pouchdb.com/getting-started.html我用下面的代碼來將數據複製到CouchDB的使用couchDB複製pouchDB文檔

var db2 = new PouchDB('todos'); 
var remoteCouch = 'http://localhost:5984/_utils/database.html?couchdb_sample'; 

db2.changes({ 
since: 'now', 
live: true 
}).on('change', showTodos); 
sync(); 
function sync() { 
//alert("sync"); 
//syncDom.setAttribute('data-sync-state', 'syncing'); 
//var opts = {live: true}; 
db2.replicate.to(remoteCouch).on('complete', function() { 
console.log("done"); 
}).on('error', function (err) { 
    console.log(err); 
}); 

function addTodo(text) { 
var todo = { 
_id: $("#eid").val()+$("#version").val(), 
title: text, 
name: $("#nameid").val(), 
version: $("#version").val(), 
completed: false 
}; 
db2.put(todo, function callback(err, result) { 
    if (!err) { 
    console.log('Successfully posted a todo!'); 
    } 
    else{ 
    console.log(err); 
    } 
});} 

這裏的標題具有XML字符串作爲值。但是我正面臨着以下錯誤

SyntaxError: Unexpected token < 

    at Object.parse (native) 

db2.replicate.to(remoteCouch)。我手動在couchDb數據庫中創建了一個新文檔,並輸入了相同的數據,但沒有發生錯誤,但是當我嘗試複製時顯示語法錯誤。任何人都可以請我暗示我在哪裏出錯

回答

1
http://localhost:5984/_utils/database.html?couchdb_sample 

指向一個HTML網站(從瀏覽器地址欄複製,對吧?)。刪除中間部分:

http://localhost:5984/couchdb_sample 
+0

我刪除了database.html,但現在我得到另一個錯誤NetworkError:405方法不允許,但我已經在local.ini文件中啓用了Cors部分。 – sugar

+0

這是另一個問題,你應該問一個單獨的線程。如果我的回答幫助你,請尊重SO規則並將其標記爲已解決。 –

+0

感謝@ llabball的快速​​幫助 – sugar

0

看起來您沒有像PouchDb預期的那樣定義遠程數據庫。您應該使用「新PouchDb」呼叫。你的代碼的下聯是:

var remoteCouch = 'http://localhost:5984/_utils/database.html?couchdb_sample'; 

,但我想應該是這樣的:

var remoteCouch = new PouchDB('http://localhost:5984/couchdb_sample'); 

我不是從你的代碼是什麼遠程數據庫的名稱是明確的,但它會正如Ingo Radatz指出的那樣,通常不會在「.html」結尾,所以我假設它是couchdb_sample以上。有關於the PouchDb site上的複製的更多信息。