2014-04-03 61 views
-1

在PHP我打电话MongoDB的JavaScript函数的start()如何从php mongodb调用javascript函数?

$username="root"; 

$password="root"; 

$mongo_uri="mongodb://".$username.":".$password."@localhost"; 

$connection = new MongoClient($mongo_uri); 

$db = $connection->test; 

$response = $db->execute("start()"); 

print_r($response); 

为越来越

Array 
    (

     [ok] => 0 

     [errmsg] => unauthorized 

    ) 

$用户名+ $密码+ $ mongo_uri的结果 - 右,和$ DB给予ok连接,

但是得到未授权的错误$response = $db->execute("start()");

如何从php中调用mongodb函数start()?

回答

0

这里的execute()方法是作为MongoDB的db.eval()方法的包装实现的。所以大概你指的是你已经加载到服务器端的一些服务器端JavaScript方法。

authentication roles手册页所示,eval需要特殊的权限,这些权限可能尚未授予您用来进行身份验证的帐户。这可能是事情一般CRUD操作的帐户使用的帐户不应该有这些特权级别。如果任何此类操作只能用于它自己的特权连接。

执行服务器端JavaScript对于生产系统来说通常不是一个好主意,如果你的函数实际上是一些相当微不足道的东西,那么最好在你的本地库代码中重新实现它。

所以请注意日db.eval()手册第警告,还要注意,即使有正确的权限分配,你将无法对分片群集环境中运行此命令。

最后,还请参阅MongoCode类,以便在绝对需要的情况下定义JavaScript调用的更好方法。

+0

我创建管理所有可能的权限 错误仍然存​​在 – user3495941

+0

@ user3495941你可能分片群集上的提到运行? –

+0

我在heroku上工作,我创建了具有所有可能特权角色的管理员:[“read”,“readWrite”,“dbAdmin”,“userAdmin”,“clusterAdmin”,“readAnyDatabase”,“readWriteAnyDatabase”,“userAdminAnyDatabase”,“dbAdminAnyDatabase “] 错误仍然存​​在 – user3495941