我最近开始玩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驱动程序。我对吗?
答案 0 :(得分:3)
您可以尝试使用vanilla NodeJS或您选择的其他几个框架来构建REST API以与MongoDB服务器进行交互。您可以尝试baucis *。
*免责声明:我是baucis的主要作者
答案 1 :(得分:1)
您应该为MongoDB使用REST接口。我非常喜欢sleepy.mongoose。它在python上运行,可能需要一分钟才能完成设置,但值得付出努力。
Here is a blog by the author帮助我开始了。
答案 2 :(得分:1)
如果我如上所述直接连接到远程mongodb,真的很蠢吗?
不,使用本机MongoDB驱动程序非常标准。但是,我不是连接然后立即与您的数据库交互,而是构建应用程序,以便您连接然后等待HTTP调用或其他一些函数与数据库交互。
我可以从HTML页面调用脚本吗?
绝对。在您的node.js应用程序中,我将构建一个侦听某些HTTP调用的Web服务器。在您的HTML中,为您的应用程序正在监听的Web服务器提供GET,POST等链接或表单。
例如,您的前端看起来可能是<form action="/document/add" method="post">
。然后,保留main.js
作为在node.js上运行的后端代码,但修改它以侦听对/document/add
的POST调用。当调用该URL时,请使用POSTed表单数据运行插入代码。
您还可以创建一个AJAX解决方案来监听表单提交并在后台提交POST,等待响应,并相应地更新页面。
与将其重新设计为客户端 - 服务器结构相比有哪些缺点?
优点和缺点将非常特定于您要创建的应用程序类型。
我认为上面要做的正确做法是在远程服务器上创建一个带有nodejs的http服务器,它将客户端的请求传递给mongodb驱动程序。我是对的吗?
你是对的。这是使用node.js和MongoDB的非常标准的做法。我将建议Express创建用于与数据库连接的API。它提供了开箱即用的URL路由等功能。但是,您可以构建自己的平台,也可以使用适用于您的应用程序/环境的任何其他平台。
答案 3 :(得分:0)
以下是部署到Heroku的演示应用程序, http://nodejs-crud.herokuapp.com/,教程链接为http://codeforbrowser.com/blog/crud-operations-in-node-js-and-mongodb/