0

我在 NodeJS 中运行了一些代码,用于在数据库中设置文档:

    cb.set(req.body.id, req.body.value, function (err, meta) {
      res.send(req.body);
    });

我读过复合键,似乎这个功能可以简化我的生活。问题是如何正确添加带有复合键的条目?下面的代码失败并且消息是字符串是预期的,没有数组。

    cb.set([req.body.id, generate_uuid()], req.body.value, function (err, meta) {
      res.send(req.body);
    });

那么我应该将我的数组转换为像'[“patrick_bateman”,'uuid_goes_here']'这样的字符串吗?

4

1 回答 1

0

如果你说的是这个“复合键” ......

此复合键不是由用户直接设置的,它们是在您使用视图时由 couchbase 服务器制作的。在 couchbase 视图中,您可以创建将使用“复合键”的映射函数。例子:

map: function() {
  if (doc.type === "mytype"){
    emit([doc.body.id, doc.uuid], null);
  }
}

在这种情况下,couchbase 将通过该“复合键”创建索引,并且当您查询视图时,您将能够设置“两个”键。

这很有用,即在您需要获取一些在某个时间范围内变化的文档的情况下。例如,您有类型为“消息”的文档,并且您想要获取所有不时创建的文档47.

在这种情况下,地图功能将如下所示:

map: function(){
  if (meta.type === "json"){
    emit([doc.type, doc.timestamp], null);
  }
}

和查询将包含参数startKey=["message", 4]endKey=["message", 7]

但您也可以创建复杂的键,例如“message:4”,然后通过简单的 get 进行查询。for即,如果您对该消息使用顺序ID(通过使用增量函数),您可以使用简单的循环和函数轻松地遍历该消息couchbase.get

还可以查看Tug Grall的这篇关于使用 nodejs 和 couchbase 创建聊天应用程序的博客文章。

于 2013-08-14T18:29:23.327 回答