当我使用 nodejs 中“$where”子句中传递的函数查询我的数据库时,它总是返回数据库中的所有文档。
例如,如果我这样做
var stream = timetables.find({$where: function() { return false; }}).stream();
它还给我所有的文件。相反,如果我这样做
var stream = timetables.find({$where: 'function() { return false; }'}).stream();
该函数真的被执行了,并且这段代码不返回任何文档。
问题是,如果我在字符串中转换我的函数,上下文的绑定将被删除,我需要它们来进行更复杂的查询。例如:
var n = 1;
var f = function() { return this.number == n; }
var stream = timetables.find({$where: f.toString()}).stream();
// error: n is not defined
这是正常行为吗?我该如何解决我的问题?请原谅我糟糕的英语!