因此,我在使用 PouchDB 和 MapRepduce 搜索 HTML5 画布中的持久图形对象时有点创意。(我试图用简单的边界框逻辑判断用户是否点击了该对象)那部分并不那么重要;这可能很愚蠢,但我只想这样做,因为我就是这样的傻瓜。
也就是说,我想将一对自定义值传递给我的 PouchDB 查询的 reducer 函数。我不确定该怎么做,确切地说。
这有点像我现在正在做的事情:
var x = evt.clientX, y = evt.clientY
var map = function (doc) {
emit('bbox',
{
x0: doc.x,
x1: doc.x + doc.w,
y0: doc.y,
y1: doc.y + doc.h
}
)
}
var reduce = function (keys, values, rereduce) {
return values.forEach(function (bbox) {
if (x >= bbox.x0 && x < bbox.x1 && y >= bbox.y0 && y < bbox.y1) {
return true
}
})
}
var result = db.px.query({map: map, reduce: reduce}, function (err, rsp) {
cb(rsp)
})
它现在不起作用,因为 reduce 函数无法访问 x 和 y 值,因为出于某种原因,它们无法从函数运行的范围内访问。所以,我认为我需要通过该查询方法将它们传递给 Pouch/Couch。我有点卡在这里。