如何将mongodb结果变量发送到node.js中的客户端?

时间:2018-06-26 04:49:40

标签: node.js

我无法使用node.js将mongodb查询的结果发送到客户端。

这是我在server.js文件中的示例代码。

if(filePath == '/getstringjson') {/* if random json string requested then */
        /* mongodb get user emails */
        MongoClient.connect(mongodb_url, function(err, db) {
            if (err) throw err;
            var dbo = db.db("mydb");
            dbo.collection("customers").findOne({}, function(err, result) {
                if (err) throw err;
                console.log(result);
                console.log(result.name);
                db.close();
            });            
        });
        /* send request to client */
        response.writeHead(200, {'Content-Type': mimeTypes[".txt"]});
        response.end('weird');/* send random string */
    } 

这是在我的客户端。

function get_first_user_json() {
   xmlhttp = new XMLHttpRequest();
   xmlhttp.open('POST', $base_url+'getstringjson', true);
   xmlhttp.onreadystatechange = function() {
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            result = xmlhttp.responseText;
            alert(result);
            console.log(result);
            console.log('can we actually write to the console though?');
        }
    }
    xmlhttp.send();
}

此代码可以正常工作。但是,当我将发送请求放入MongoClient.connect时,它将停止将请求发送到客户端。这是无效的代码。

if(filePath == '/getstringjson') {/* if random json string requested then */
        /* mongodb get user emails */
        MongoClient.connect(mongodb_url, function(err, db) {
            if (err) throw err;
            var dbo = db.db("mydb");
            dbo.collection("customers").findOne({}, function(err, result) {
                if (err) throw err;
                console.log(result);
                console.log(result.name);
                /* send request to client */
                response.writeHead(200, {'Content-Type': mimeTypes[".txt"]});
                response.end('weird');/* send random string */
                db.close();
            });            
        });
    } 

为什么仅当'response.WriteHead'和'response.end()'在MongoClient.connect()函数之外时才起作用?如何完成将mongodb结果发送到客户端?

0 个答案:

没有答案