2013-10-31 30 views
2

我的脚本有点问题。我无法在'$ 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); 
    } 
}, 
+0

您是否设法找到解决方案,除了直接在脚本中包含变量? –

回答

3

一个$where在服务器上执行,所以并不会访问到在本地另一台服务器上声明的变量。 JavaScript应该作为last resort generally in MongoDB使用,并且这似乎是另一种方式,并且执行很多非常耗时的工作。

您需要将函数构建为字符串并直接包含该值。

0

这一个是我的作品,只要设法查询存储在一个变量字符串,然后Concat的查询字符串中的变量,

VAR local_var = 42

VAR的查询=“{ $其中:函数(){返回this.a == “+ local_var +”}}”

db.test.find(查询)

watch the reference exaple