当前位置:  开发笔记 > 编程语言 > 正文

如何在MongoDB中使用外部变量'where'通过Javascript查询?

如何解决《如何在MongoDB中使用外部变量'where'通过Javascript查询?》经验,为你挑选了1个好方法。

我有一个MongoDB查询,它在所有属性中搜索搜索变量中定义的值.它的工作方式如下:

 db.collection.findOne({
                $where: function() {
                    var search = 'searchstring';
                    for (var key in this) {
                        if (this[key] === search) {
                          return true;
                        }
                        return false;
                    }
                }
            });

但是,我想在查询之外定义搜索变量.

但是当我这样做时,我得到一个错误,它没有被引用(即范围问题):

"ReferenceError: search is not defined near '[key] === search

如何使用或将变量传递给查询过滤器?



1> 小智..:

你可以尝试这样的事情:

var searchstring = 'whatever';
var params = {};
params.$where = 'function() {' +
    'var search = "' + searchstring + '";' +
    'for (var key in this) {' +
        'if (this[key] === search) {' +
            'return true;' +
        '}' +
        'return false;' +
    '}' +
'}';
db.collection.findOne(params);

(使用外部变量对函数进行字符串化和连接)

通过猫鼬为我工作


在可执行代码中注入一个不透明的字符串,可能会出错?
推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有