MongoDB客户端端JavaScript API

15
我想直接从客户端使用MongoDB,使用模型内部的Javascript。我猜测这是可能的,因为在Mongo网站上有一个JavaScript实时控制台用于演示。
是否存在一种方法可以在普通的JavaScript应用程序中使用相同的API,而不必编写客户端-服务器粘合代码?
谢谢
4个回答

7
看起来该网站使用类似REST的AJAX接口,但我确定它既不直接访问任何MongoDB实例,也不通过某些桥梁间接访问它。
在应用此模式之前,请三思而行:您如何确保安全性?您是否了解AJAX的限制?如果您确切知道自己在做什么,官方文档指向了几个有用的资源:
  • Sleepy Mongoose(Python)是一个完整的MongoDB REST接口,可作为单独的项目使用。

  • MongoDB Rest(Node.js)是一个alpha版REST接口,使用MongoDB Node Native驱动程序。

  • 简单的REST接口 mongod进程包括一个简单的只读REST接口,供方便使用。对于完整的REST功能,我们建议使用外部工具,如Sleepy.Mongoose。

通过具有REST桥接和管理同源策略,您可以轻松使用AJAX调用和JavaScript直接访问MongoDB。

1
有关安全方面的任何建议? - Bakaburg
2
我认为在服务器端客户端和MongoDB REST桥之间放置一些中间件,以检查凭据并授权客户端是比较好的做法。这样,客户端代码(浏览器)就不需要知道任何关于MongoDB凭据的信息,但因为它发送会话cookie(假设用户已登录),你可以识别客户端并给予他访问权限或拒绝访问。 - Tomasz Nurkiewicz
谢谢你的回答!我同意你的观点。但是你认为不经过服务器中间层传递每个数据库请求的负担是不可能构建应用程序的吗?但是couchdb和couchapp可以使用REST通信(通过一个非常干净的jquery接口)。他们如何处理安全性问题?我不想学习couchdb,因为我觉得它对我所需的内容来说过于复杂(而且需要时间)。 - Bakaburg

1

我需要自己做类似于这样的事情,即在管理员界面中添加控制台,并且由于我在后端使用PHP,所以我只需编写一个脚本来接收js命令并使用MongoDB :: execute方法,php中的连接已经打开,因此我不需要传递任何身份验证数据,只需要命令。
但是,您必须非常小心处理这种情况,并确保只有可信用户可以访问页面(和脚本),不要公开它,因为任何人都可以执行js客户端代码以获取对您的数据库的访问权限。

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


1

看一下meteorjs,或类似的框架。模型只需编写一次,即可完成完整的ACL。

如果加入Redis,效果会更好 :)


0
对于其他人的疑问,这是可以通过使用Stitch实现的,它类似于Google的Firebase,提供客户端访问后端数据库的功能,而在这种情况下,后端数据库是Atlas BaaS上的MongoDB。 Stitch还具有像AWS Lambdas和其他功能一样的函数,这些功能对于开发实时应用程序非常有意义。昨天在聚会上设置基本博客教程时,似乎相当简单明了。干杯!

https://docs.mongodb.com/stitch/tutorials/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接