我的剧本有点问题。我无法在“$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,而这似乎是另一种方式,执行了很多非常耗时的工作。
您需要将函数构建为字符串并直接包含该值。