我如何使用客户端JavaScript从MongoDB和没有框架的Node.js服务器中查找和返回数据?

我已经阅读了所有我能find的问题。 他们都使用快递,mongoose或他们留下了一些东西。 我明白,Node.js是服务器。 我知道MongoDB的require是Node.js服务器用来打开MongoDB连接的驱动程序。 然后,在服务器上,我可以做(从文档 ):

 var MongoClient = require('mongodb').MongoClient; var assert = require('assert'); var ObjectId = require('mongodb').ObjectID; var url = 'mongodb://localhost:27017/test'; var findRestaurants = function(db, callback) { var cursor =db.collection('restaurants').find( ); cursor.each(function(err, doc) { assert.equal(err, null); if (doc != null) { console.dir(doc); } else { callback(); } }); }; // Connect to the db MongoClient.connect(url, function(err, db) { assert.equal(null, err); findRestaurants(db, function() { //I don't want to do this as soon as the server starts db.close(); }); }); //if I put findRestaurant here, function findRestaurant(data){ } 

我如何从客户端调用它? 我不想在我启动服务器时立即find数据。 我意识到这些都是例子,但我找不到的是客户端请求一些数据和Node.js服务器返回它的方式。

我已经看到了使用jQuery,在客户端上的Angular,然后是Express,Mongoose,Meteor等等的近似例子。

我想了解的是我如何从客户端浏览器发出这个请求。 我可以用XMLhttpRequest()来做到这一点,所以我可以把这个部分放在一起。 但是,任何例子表示赞赏。

但是,在Node.js方面等待什么(如何设置我的函数,一旦服务器正在侦听)呢?

如何在服务器端创build一个函数,也许“GetRestaurants”,并返回它使用find()获得的数据?

我无法find这个信息,这个简单,任何地方。 没有框架的情况下做这个例子太复杂了吗?

我不希望复制和粘贴使用Express等的东西,不知道发生了什么事情。 大多数解释从不说,这在Node.js一边。 这是客户。 我知道我期望做我自己的研究,但我不是把它放在一起,也习惯于RDBMSes,IIS,Apache,PHP等等。

我相信我对这个范式发生了什么有一个根本性的误解。

。 除了使用MongoDB库(除非有绝对的要求 ),甚至不包括jQuery,Angular,Jade,或其他任何用于客户端的东西,没有REST API创build,Node.js上没有任何types的框架,两侧。

我看到过这样的问题,

如何在不使用框架的情况下通过Node.js将数据从MongoDB显示到前端

但他们不显示我所要求的。 一旦数据库连接,它们立即执行。 如果我想做一个删除或插入或find? 有很多这样的问题,但我没有打到显示我在找什么。

这应该给予指导。 一旦你进入浏览器并inputhttp://localhost:5155 ,callbackfunction (request, response) {将会被调用,并且会产生对db的请求。 确保获得回应,然后开始处理客户端代码:

 const http = require('http'); const MongoClient = require('mongodb').MongoClient; const assert = require('assert'); const url = 'mongodb://localhost:27017/test'; const server = http.createServer(function (request, response) { getData(function (data) { response.end(data); }); }); function getData(callback) { // Connect to the db MongoClient.connect(url, function (err, db) { assert.equal(null, err); findRestaurants(db, function (data) { db.close(); callback(data); }); }); const findRestaurants = function (db, callback) { const cursor = db.collection('restaurants').find(); const data = []; cursor.each(function (err, doc) { assert.equal(err, null); data.push(doc); if (doc === null) { callback(data); } }); }; } server.listen(5155);