2017-03-08 104 views
1

我想在couchDB文檔中添加(即push到現有數組)。 任何反饋,非常感謝。編輯/更新文檔中的嵌套對象CouchDB(node.js)

我有一個名爲「調查」我的數據庫名爲「數據庫1」裏面的文件。 我有「調查」作爲一組數組,其中包含每個調查信息的對象。

我的目標是更新我的「調查」文件。沒有替換我的數組,而是將一個新的對象添加到現有的數組中。我用「nano-couchdb」和「node-couchdb」,但是找不到解決辦法。我能夠更新我的「調查」,但它會取代整個事情,而不是保持陣列中的現有對象。

1)採用納米CouchDB的:

db.insert({ _id, name }, "survey", function (error, resp) { 
    if(!error) { console.log("it worked") 
    } else { 
    console.log("sad panda")} 
}) 

2)使用CouchDB的節點:

couch.update("database1", { 
    _id: "survey", 
    _rev:"2-29b3a6b2c3a032ed7d02261d9913737f", 
    surveys: { _id: name name: name } 
) 

這些與添加新文檔到數據庫的工作很好,但不會增加工作東西到現有的文件。

{ 
     "_id": "survey", 
     "_rev": "2-29b3a6b2c3a032ed7d02261d9913737f", 
     "surveys": [ 
     { 
      "_id": "1", 
      "name": "Chris" 
     }, 
     { 
      "_id": "2", 
      "name": "Bob" 
     }, 
     { 
      "_id": "1", 
      "name": "Nick" 
     } 
     ] 
    } 

我希望每當新的數據進入到這個文件我的請求,因爲這將工作

"surveys.push({_id:"4",name:"harris"}) 

回答

0

您的數據模型應該改進。在CouchDB中,創建一個巨大的「調查」文檔沒有多大意義,但將每個調查存儲爲單獨的文檔。如果你需要所有的調查,只需create a view for this。如果您使用CouchDB 2.0,則還可以通過芒果查詢調查文檔。

你的文件看起來是這樣的:

{ 
    "_id": "survey.1", 
    "type": "survey", 
    "name": "Chris" 
} 

而且你的地圖功能看起來像:

function (doc) { 
    if (doc.type === 'survey') emit(doc._id); 
} 

假設你救了這個觀點作爲設計文檔'調查「_design/documentLists',你可以通過http://localhost:5984/database1/_design/documentLists/_view/surveys查詢它。