gpt4 book ai didi

javascript - IIFE返回map函数,map不能使用var

转载 作者:行者123 更新时间:2023-12-02 23:05:45 25 4
gpt4 key购买 nike

我想在 map 操作中使用一个函数,它将局部变量与从 map 返回的文档进行比较。我直接尝试过,也尝试过作为 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

最佳答案

传递给query的函数被字符串化并发送到数据库。然后在那里进行评估。因此,您无法从外部访问任何内容,它必须是纯粹的,换句话说,您只能访问传递的 docbuiltin methods (是的,文档确实应该提到这一点)。

看起来,您想要做的事情可以通过常规 find() 查询轻松完成:

    var boatNumber = $('#add_result_boat_number').val();
ro.pdb.find({
selector: {
boatnumber: boatNumber,
},
fields: ["boatClass", "p1name", "p2name"]
}).then(...)

关于javascript - IIFE返回map函数,map不能使用var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com