gpt4 book ai didi

node.js - 编辑/更新文档 CouchDB (node.js) 中的嵌套对象

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:01 25 4
gpt4 key购买 nike

我正在尝试在 couchDB 文档中添加(也称为推送到现有数组)。非常感谢任何反馈。

我的数据库“database1”中有一个名为“survey”的文档。我有“调查”作为一组数组,其中包含包含每个调查信息的对象。

我的目标是更新我的“调查”文档。不是替换我的数组,而是向现有数组添加一个新对象。我使用过“nano-couchdb”和“node-couchdb”,但找不到解决方法。我能够更新我的“调查”,但它将替换整个内容,而不是将现有对象保留在数组中。

1)使用 Nano-couchdb:

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

2)使用 couchdb-node:

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,还可以通过Mango查询调查文档。

您的文档可能如下所示:

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

你的 map 函数看起来像这样:

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

假设您将此 View 保存为设计文档“_design/documentLists”中的“调查”,您可以通过 http://localhost:5984/database1/_design/documentLists/_view/surveys 查询它.

关于node.js - 编辑/更新文档 CouchDB (node.js) 中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42663106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com