如何使用Nodejs在远程Mongodb上进行CRUD操作

我最近开始玩NodeJS – 我所知道的是它是一个服务器端技术。 我做了什么,想要完成如下:

我有一个远程服务器上运行的MongoDB。 我正在使用nodejs mongodb驱动程序 ,通过简单地执行以下操作,我可以连接到数据库,只需要说创build一个文档:

// 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前端,我想通过一个简单的button单击事件将字段传递给我的数据库。 我的问题是:

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

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

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

不,使用本地MongoDB驱动程序是非常标准的。 然而,我并没有连接数据库,而是直接与数据库进行交互,而是构build应用程序,以便连接,然后等待HTTP调用或其他某些函数与数据库进行交互。

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

绝对。 在你的node.js应用程序中,我将构build一个监听特定HTTP调用的Web服务器。 在您的HTML中,提供GET,POST等链接或表单,您的应用程序正在监听的Web服务器。

例如,你的前端看起来可能是一个<form action="/document/add" method="post"> 。 然后,将main.js为在node.js上运行的后端代码,但将其修改为侦听对/document/add的POST调用。 当对该URL的调用进来时,使用POST的表单数据运行插入代码。

您也可以创build一个AJAX解决scheme来侦听表单提交,并在后台提交POST,等待响应,并相应地更新页面。

与重新devise到客户端 – 服务器结构相比,有什么缺点?

优点和缺点将非常特定于您要创build的应用程序的types。

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

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

您可以尝试使用vanilla NodeJS或您select的其他框架来构buildREST API来与MongoDB服务器进行交互。 你可以尝试baucis *。

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

您应该为MongoDB使用REST接口。 我喜欢睡 ,很多。 它运行在python上,可以花一分钟时间设置,但是非常值得。

这里是作者帮助我开始的博客 。