我在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']'这样的字符串吗?
答案 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”创建索引,当您查询视图时,您将能够设置“两个”键。
这很有用,例如在您需要获取某些时间范围内变化的文档时。例如,您有“消息”类型的文档,并且您希望获得从时间4
到7
创建的所有文档。
在这种情况下,地图功能将如下所示:
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
函数轻松迭代这些消息。