1

我最近开始玩弄 NodeJS——我只知道它是一种服务器端技术。我所做的和想要完成的如下:

我有一个在远程服务器上运行的 MongoDB。我正在使用nodejs mongodb driver,只需执行以下操作,我就可以连接到数据库并创建一个文档:

// main.js
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://remote_url:27017/mymongo', function(err, db) {
    var document = {a:"1", b:"2"};
    db.collection('collection').insert(document, function(err, records) {
        if (err) throw err;
    }
}

如您所知,上面的代码需要一个控制台调用,例如:node main.js,但是我有一个带有多个文本字段的 HTML5 前端,我想通过一个简单的按钮单击事件将这些字段传递到我的数据库。我的问题是:

如果我像上面那样直接连接到远程mongodb真的很愚蠢吗?我可以从我的 HTML 页面调用脚本吗?如果可以,那么与将其重新设计为客户端-服务器结构相比有哪些缺点?

最后,我认为完成上述正确做法是在远程服务器上使用 nodejs 创建一个 http 服务器,将客户端的请求传递给 mongodb 驱动程序。我对吗?

4

4 回答 4

3

您可以尝试使用 vanilla NodeJS 或您选择的许多其他框架来构建 REST API 以与 MongoDB 服务器交互。你可以试试baucis *.

*免责声明:我是baucis的主要作者

于 2013-11-06T18:02:52.083 回答
1

您应该为 MongoDB 使用 REST 接口。我很喜欢sleepy.mongoose。它在 python 上运行,可能需要一分钟的时间来设置,但值得付出努力。

这是作者的博客,它帮助我入门。

于 2013-11-06T16:41:31.800 回答
1

如果我像上面那样直接连接到远程mongodb真的很愚蠢吗?

不,使用本机 MongoDB 驱动程序是非常标准的。但是,我不会连接然后立即与您的数据库交互,而是构建应用程序以便您连接然后等待 HTTP 调用或其他一些函数与数据库交互。

我可以从我的 HTML 页面调用脚本吗?

绝对地。在您的 node.js 应用程序中,我将构建一个 Web 服务器来侦听某些 HTTP 调用。在您的 HTML 中,提供指向您的应用程序正在侦听的 Web 服务器的 GET、POST 等链接或表单。

例如,您的前端可能看起来像一个<form action="/document/add" method="post">. 然后,保留main.js在 node.js 上运行的后端代码,但修改它以侦听对/document/add. 当调用该 URL 时,使用已发布的表单数据运行插入代码。

您还可以创建一个 AJAX 解决方案来监听表单提交并在后台提交 POST,等待响应,并相应地更新页面。

与将其重新设计为客户端-服务器结构相比有哪些缺点?

优点和缺点将非常特定于您要创建的应用程序类型。

我认为完成上述正确做法是在远程服务器上创建一个带有 nodejs 的 http 服务器,它将客户端的请求传递给 mongodb 驱动程序。我对吗?

你是对的。这是使用 node.js 和 MongoDB 的标准做法。我将推荐Express来创建与数据库交互的 API。它提供开箱即用的 URL 路由等功能。但是,您可以构建自己的平台,或使用适用于您的应用程序/环境的任何其他平台。

于 2013-11-06T16:44:27.273 回答
0

这是部署到 Heroku 的演示应用程序, http: //nodejs-crud.herokuapp.com/,教程链接是http://codeforbrowser.com/blog/crud-operations-in-node-js-and-mongodb/

于 2014-09-01T07:57:03.657 回答