2017-03-08 131 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查询它。