【问题标题】:Mongodb client side javascript apiMongodb客户端javascript api
【发布时间】:2011-11-09 16:41:53
【问题描述】:

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

有没有一种方法可以在普通的 javascript 应用程序中使用相同的 api 而无需编写客户端-服务器粘合代码?

谢谢

【问题讨论】:

    标签: mongodb client-server client-side javascript


    【解决方案1】:

    看起来该站点使用类似 REST 的 AJAX 接口,但我确信它不会直接访问任何 MongoDB 实例,甚至不会通过某些桥接间接访问。

    在应用此模式之前要三思:您将如何实施安全性?你知道 AJAX 的限制吗?如果你真的知道自己在做什么,官方documentation指点几个有用的资源:

    • Sleepy Mongoose (Python) 是一个用于 MongoDB 的全功能 REST 接口,可作为单独的项目使用。

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

    • Simple REST Interface 为了方便起见,mongod 进程包含一个简单的只读 REST 接口。对于完整的 REST 功能,我们建议使用外部工具,例如 Sleepy.Mongoose。

    拥有一个 REST 桥并管理 same origin policy,您可以轻松地使用 AJAX 调用和 JavaScript 直接访问 MongoDB。

    【讨论】:

    • 对安全有什么建议吗?
    • 我想我会在服务器端的客户端和 MongoDB REST 桥之间放置一些中间件,检查凭据并授权客户端。这样,客户端代码(浏览器)对 MongoDB 凭据一无所知,但由于它发送会话 cookie(假设用户已登录),您可以识别客户端并授予他访问权限。
    • 感谢您的回答!我同意你的看法。但是你认为如果没有通过服务器中间层传递每个数据库请求的负担来构建应用程序是不可能的?但是 couchdb 和 couchapp 可以使用 REST 通信(通过一个确实干净的 jquery 接口)。他们如何应对安全问题?我不想学习 couchdb,因为我发现它对于我需要的东西(以及我所拥有的时间)过于复杂
    【解决方案2】:

    我需要自己做一些类似的事情,一个管理界面内的控制台,因为我在后端使用 PHP,所以我只是编写了脚本来接收 js 命令并使用 MongoDB::execute 方法,php 中的连接已打开,因此我无需传递任何身份验证数据,只需传递命令即可。
    但是,您必须非常小心这样的事情,并确保只有受信任的用户才能访问页面(和脚本),不要将其公开,因为任何人都可以在客户端上执行 js 来访问您的数据库。

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

    【讨论】:

      【解决方案3】:

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

      添加 Redis 会变得更好 :)

      【讨论】:

        【解决方案4】:

        对于其他想知道的人,这可以使用类似于 Google 的 Firebase 的 Stitch,因为它提供对后端数据库的客户端访问,在本例中是 Atlas BaaS 上的 MongoDB。 Stitch 还具有 AWS Lambdas 等功能以及其他对开发实时应用程序有意义的功能。当我昨天在聚会上设置基本博客教程时,这似乎相当简单。干杯!

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-22
          • 1970-01-01
          • 2012-04-24
          • 2020-01-24
          • 2011-06-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多