我的剧本有点问题。我无法在“$where”中的函数中传递参数(示例中为myparameter)。
你有办法帮我吗?谢谢。

var MYPARAMETER = "dqsd qsdqs &é&é";

MyCol.findOne({

    $where: function(MYPARAMETER)
    {
        var tab1="ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ!#$€%&'`(),;:/@.*[]\|";
        var tab2=   "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn                      ";
        rep2=tab1.split('');
        rep=tab2.split('');
        parray=new Array();
        var i=-1;
        while(rep2[++i])
        {
            parray[rep2[i]]=rep[i]
        }
        var chaine = this.name.replace(/\s{1,}/g,"-");
        chaine = chaine.replace(/./g, function($0){return (parray[$0])?parray[$0]:$0 });
        chaine = chaine.replace(/\s/g,"");


        return (chaine == MYPARAMETER);
    }
},

最佳答案

$where在服务器上执行,因此无法访问在另一个服务器上本地声明的变量。javascript应该用作last resort generally in MongoDB,而这似乎是另一种方式,执行了很多非常耗时的工作。
您需要将函数构建为字符串并直接包含该值。

09-18 15:19
查看更多