2011-09-03 122 views
12

我想直接从客户端使用mongodb,在我的模型中使用javascript。我想这是可能的,因为在mongo网站上有一个用于演示的JavaScript实时控制台。Mongodb客户端javascript api

确实存在一种方法,使用相同的API在一个正常的JavaScript应用,而无需编写客户端 - 服务器胶水代码?

感谢

回答

7

貌似网站使用REST-如AJAX接口,但我可以肯定,它不直接或间接地连访问任何MongoDB实例通过一些桥梁。

在应用此模式之前应考虑两次:如何执行安全性?你知道AJAX的限制吗?如果你真的知道你在做什么,官方documentation点到一些有用的资源:

  • Sleepy Mongoose(蟒蛇)是MongoDB的一个全功能的REST接口是可以作为一个单独的项目。

  • MongoDB Rest(Node.js)是alpha到MongoDB的REST接口,它使用MongoDB节点Native驱动程序。

  • Simple REST Interface的mongod的过程包括为方便起见简单只读REST接口。对于完整的REST功能,我们推荐使用外部工具,如Sleepy.Mongoose

在休息桥梁和管理same origin policy你可以直接使用AJAX调用和JavaScript轻松访问MongoDB的。

+1

任何有关安全性的建议? – Bakaburg

+1

我想我会在服务器端检查证书并授权客户端在客户端和MongoDB REST桥之间放置一些中间件。通过这种方式,客户端代码(浏览器)不知道任何关于MongoDB凭据的信息,但是因为它发送会话cookie(假设用户已登录),您可以识别客户端并授予其访问权限。 –

+0

感谢您的回答!我赞同你。但是如果没有通过服务器中间层传递每个数据库请求的负担,您认为构建应用程序是不可能的?但couchdb和couchapp可以使用REST通信(通过确实干净的jquery界面)。他们如何应对安全问题?我不想学习couchdb,因为我发现它对于我所需要的(以及我所拥有的时间)来说过于复杂。 – Bakaburg

1

我需要做一些类似的自己,一个管理界面内的控制台,因为我在后端使用PHP我只是做了脚本接收JS的命令,并使用MongoDB的:: execute方法,在连接PHP已经打开,所以我不必传递任何验证数据,只是命令。
你必须有这样的事情非常小心,并确保只有受信任的用户可以访问该页面(和脚本),不予以公布,因为任何人都可以在客户端执行JS来获得访问您的D b。

编辑:这里的链接到文档http://ar2.php.net/manual/en/mongodb.execute.php

1

看看meteorjs,或类似的。模型编写一次,完整的ACL。

当你在Redis中添加时会更好:)