Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用客户端JavaScript从MongoDB和没有框架的Node.js服务器查找和返回数据?_Javascript_Node.js_Mongodb_Xmlhttprequest - Fatal编程技术网

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

如何使用客户端JavaScript从MongoDB和没有框架的Node.js服务器查找和返回数据?,javascript,node.js,mongodb,xmlhttprequest,Javascript,Node.js,Mongodb,Xmlhttprequest,我已经把所有的问题都读了,以便能找到答案。他们都使用Express、Mongoose或省略某些内容。我知道Node.js是服务器。我了解MongoDBrequire是Node.js服务器用来打开与MongoDB连接的驱动程序。然后,在服务器上,我可以(从中)执行以下操作: 我如何从客户那里称呼它? 我不希望在启动服务器后立即查找数据。我意识到这些都是示例,但我找不到的是客户端请求某些数据以及Node.js服务器返回数据的方式 我在客户端看到过使用jQuery、Angular、Express、Mo

我已经把所有的问题都读了,以便能找到答案。他们都使用Express、Mongoose或省略某些内容。我知道Node.js是服务器。我了解MongoDB
require
是Node.js服务器用来打开与MongoDB连接的驱动程序。然后,在服务器上,我可以(从中)执行以下操作:

我如何从客户那里称呼它? 我不希望在启动服务器后立即查找数据。我意识到这些都是示例,但我找不到的是客户端请求某些数据以及Node.js服务器返回数据的方式

我在客户端看到过使用jQuery、Angular、Express、Mongoose、Meteor等的近距离示例

我只想了解如何从客户端的浏览器发出此请求。我可以用XMLhttpRequest()实现这一点,所以我相信我可以把这部分放在一起。但是,任何例子都值得赞赏

但是在Node.js端等待的是什么(我如何设置我的函数以便在服务器监听时调用)

如何在服务器端创建一个函数,可能是“GetRestaurants”,并让它返回使用find()获取的数据

我在任何地方都找不到这个简单的信息。如果没有一个框架,这个例子会不会太复杂

我不希望在不了解发生了什么的情况下,使用Express等复制和粘贴某些内容。大多数解释都没有说,这是在Node.js端。我是客户。我知道我应该做我自己的研究,但我不会把它放在一起,因为我太习惯于RDBMSE、IIS、Apache、PHP等等

我相信我对范式中发生的事情有一个基本的误解

。除了使用MongoDB库(除非有绝对要求),Node.js上没有REST API创建,没有任何类型的框架,客户端甚至没有jQuery、Angular、Jade或其他任何东西,所有方面都是直接的JavaScript

我见过这样的问题


但它们并没有表明我的要求。一旦数据库连接起来,他们就一次完成这一切。如果要执行删除、插入或查找操作,该怎么办?像这样的问题太多了,但我还没有找到我想要的问题。

这应该能提供指导。进入浏览器并键入
http://localhost:5155
将调用回调
函数(请求,响应){
,并向
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);

@约翰尼,是的。我还没有测试代码,但你应该能够找出它的作用并进行更正。如果有什么问题,请告诉我unclear@johnny,那么它进行得怎么样了?我还没有开始使用它。我很感激。我只是感谢它可以在没有太多复杂性的情况下完成。虽然我承认,我真的不喜欢框架中的魔法一旦我明白了,我就需要使用它们。你完全正确,我也总是尝试从尽可能最简单的设置开始,然后逐步建立
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);