如何使用Couchbase创建带复合键的条目?

时间:2013-08-14 15:30:57

标签: node.js couchbase

我在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']'这样的字符串吗?

1 个答案:

答案 0 :(得分:0)

如果你在谈论this "compound keys" ......

此计算密钥不是由用户直接设置的,它们是在您使用视图时由couchbase服务器创建的。在couchbase视图中,您可以创建将使用“compund keys”的地图功能。例如:

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

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

这很有用,例如在您需要获取某些时间范围内变化的文档时。例如,您有“消息”类型的文档,并且您希望获得从时间47创建的所有文档。

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

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

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

但你也可以创建像“message:4”这样的复杂键,然后通过简单的get来查询它。即如果对这些消息使用顺序ID(通过使用递增函数),则可以使用简单的for循环和couchbase.get函数轻松迭代这些消息。

另请blog post Tug Grall查看有关使用nodejs和couchbase创建聊天应用程序的信息。