【问题标题】:Editing/Updating nested objects in documents CouchDB (node.js)编辑/更新文档 CouchDB (node.js) 中的嵌套对象
【发布时间】:2017-07-28 12:50:48
【问题描述】:

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

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

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

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"}) 

每当新数据进入本文档时。

【问题讨论】:

    标签: node.js couchdb pouchdb couchdb-futon couchdb-nano


    【解决方案1】:

    您的数据模型应该得到改进。在 CouchDB 中,创建一个巨大的“调查”文档没有多大意义,而是将每个调查存储为一个单独的文档。如果您需要所有调查,只需create a view for this。如果您使用 CouchDB 2.0,您还可以通过 Mango 查询调查文档。

    您的文档可能如下所示:

    {
      "_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查询它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2012-05-18
      • 2018-08-15
      • 2011-10-17
      相关资源
      最近更新 更多