【发布时间】:2019-08-21 21:11:59
【问题描述】:
我有一个要在地图操作中使用的函数,它将一个局部变量与从地图返回的文档进行比较。我直接试了,我把它当成IIFE试了,两种方式都抱怨map找不到名为boatNumber的变量:
var mymap = (function() {
var boatNumber = $('#add_result_boat_number').val();
return function(doc) {
if (doc.boatnumber == boatNumber) {
emit(doc._id, {boatClass: doc.boatClass, p1name: doc.p1name, p2name: doc.p2name});
}
}
})();
ro.pdb.query(mymap).then(function(response) {
var results = response.rows;
// do stuff later
}).catch(function(error) {
ro.reporter(error);
});
如果我将boatNumber 替换为== 中的常量,则效果很好。那么如何让boatNumber在map函数中被识别呢?
更新
Error messages are:
The user's map/reduce function threw an uncaught error.
You can debug this error by doing:
myDatabase.on('error', function (err) { debugger; });
Please double-check your map/reduce function.
紧随其后
ReferenceError: "boatNumber is not defined"
anonymous file:///Users/ptomblin/Dropbox/KayakResults/js/pouchdb-7.1.1.min.js line 7 > Function:5
Zn file:///Users/ptomblin/Dropbox/KayakResults/js/pouchdb-7.1.1.min.js:7
n file:///Users/ptomblin/Dropbox/KayakResults/js/pouchdb-7.1.1.min.js:7
e file:///Users/ptomblin/Dropbox/KayakResults/js/pouchdb-7.1.1.min.js:7
【问题讨论】:
-
错误信息到底是什么?
boatNumber肯定在您显示的代码中使用的任何地方的范围内。 -
@RobinZigmond 更新有问题。
-
我确实感觉
mymap被字符串化,发送到其他地方,并在那里进行评估。我想它必须是纯的
标签: javascript closures pouchdb iife