Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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
Node.js 节点/快速异步函数res.send出现在控制台中,而不是页面中_Node.js_Mongodb_Express_Async Await - Fatal编程技术网

Node.js 节点/快速异步函数res.send出现在控制台中,而不是页面中

Node.js 节点/快速异步函数res.send出现在控制台中,而不是页面中,node.js,mongodb,express,async-await,Node.js,Mongodb,Express,Async Await,我有一些从mongo数据库获取数据的代码 express app.get中的函数将显示在浏览器url中,但在此代码中,结果仅显示在控制台中,而不显示在网页中,这是应该的 代码如下: async function showdb() { var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, { us

我有一些从mongo数据库获取数据的代码

express app.get中的函数将显示在浏览器url中,但在此代码中,结果仅显示在控制台中,而不显示在网页中,这是应该的

代码如下:

async function showdb() {

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/";

    MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
      if (err) throw err;
      var dbo = db.db('mydb');
      dbo.collection('test').findOne({}, function(err, result) {
        if (err) throw err;
        console.log(result);
        return result;
        // res.send(result); // commented out
        // db.close(); // commented out
      });
    });

  }
现在是路线:

app.get('/', (req, res) => {

    showdb().then(result => {
        res.send(result); // result is showing in the console
    })

})
res.send(结果)应该在浏览器中显示数据,但它在控制台中显示数据


如何修复此问题?

您没有包括服务器正在侦听的端口。尝试添加以下代码,这可能会对您有所帮助

var app = express();
app.set('port', 3000);
var server= app.listen(app.get('port'), function()

{

    var port = server.address().port;
    console.log(" Iam at Port:" + " " + port);


});

您没有包括服务器正在侦听的端口。尝试添加以下代码,这可能会对您有所帮助

var app = express();
app.set('port', 3000);
var server= app.listen(app.get('port'), function()

{

    var port = server.address().port;
    console.log(" Iam at Port:" + " " + port);


});
和 函数返回一个承诺,因此您可以链接它们,而无需使用代码较少的回调:

function showdb() {

  var MongoClient = require('mongodb').MongoClient;
  var url = "mongodb://localhost:27017/";

  return MongoClient.connect(url, { useNewUrlParser: true })
    .then((db) => {
       return db.db('mydb').collection('test').findOne({});
    });
}
现在,
showdb
功能将返回对路线的承诺。

和 函数返回一个承诺,因此您可以链接它们,而无需使用代码较少的回调:

function showdb() {

  var MongoClient = require('mongodb').MongoClient;
  var url = "mongodb://localhost:27017/";

  return MongoClient.connect(url, { useNewUrlParser: true })
    .then((db) => {
       return db.db('mydb').collection('test').findOne({});
    });
}

现在,
showdb
函数将返回对路线的承诺。

情况并非如此。。。该代码位于页面底部。如果我把这个showdb代码放在app.get里面,它就可以正常工作了。看起来和异步有关?不是这样的。。。该代码位于页面底部。如果我把这个showdb代码放在app.get里面,它就可以正常工作了。它看起来与异步有关?控制台中显示了什么?它的类型是什么?它显示这个:{u id:5c9669ee4f401121adb78209,desc:'这是数据'}控制台显示什么?它的类型是什么?它显示如下:{u id:5c9669ee4f401121adb78209,desc:'这是数据'}