编辑/更新文档中的嵌套对象CouchDB(node.js)
问题描述:
我想在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"})
。
答
您的数据模型应该改进。在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查询它。