在CouchDB中更新doc

时间:2012-08-06 12:13:26

标签: jquery couchdb couchapp

我知道如何在CouchDB中更新文档,但是当我更新文档时,我没有为更新指定的字段被删除。我该如何限制。例如,我的CouchDB文档包含字段:姓名,年龄,电子邮件,我只想更新此文档的电子邮件字段。所以我只传入电子邮件字段,它的值,文档ID和相应的rev。但是当我进行这样的更新时,我的文档现在只包含电子邮件。我如何限制这一点。,即只有电子邮件ID才会更新,保留其余字段并保持其值不变。 我正在使用jquery.couch.js

2 个答案:

答案 0 :(得分:3)

也许你做错了...你试图用非CouchDB方式解决CouchDB中的问题。为什么要将所有注释存储在一个文档中?如果您想在一个请求中使用帖子检索它们,那么您可以使用map来汇总来自不同文档的帖子和评论,如下所示:

发布文件:{ _id: "post1", type: "post", ... } 评论文件:

{ type: "comment",
  post: "post1", // id of the post being commenting
  ...
}

地图:

function (self) {
  if (!self.type) return;
  if (self.type == "post") {
    emit([self._id, 0], self);
  } else if (self.type == "comment" && self.post) {
    emit([self.post, 1, self.time], self);
  }
}

使用按日期排序的评论检索帖子:

curl http://127.0.0.1:5984/yourdb/_design/yourapp/_view/yourview?startkey=[%22post1%22]&endkey=[%22post1%22,{}]

通过这种方式,您还可以只检索一些注释并轻松实现分页。所有的评论都应该存放在靠近帖子的B树中,所以它也应该是有效的。

详细描述了here

答案 1 :(得分:2)

  

所以我只是传递电子邮件字段,它,s值,文档ID和它   相应的转载。

您需要使用更新的值保存整个文档,而不仅仅是要更新的值。将文档本身视为一个重要的复合价值;你不能改变它的一部分而不改变整个事物。

相关问题