Узел / экспресс Асинхронная функция res.send появляется в консоли, а не на странице - PullRequest
1 голос
/ 28 марта 2019

У меня есть код, который получает некоторые данные из базы данных Монго.

Функция в экспресс-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(result); должен показать данные вбраузер, но он показывает его в консоли.

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Оба MongoClient.connect () и collection.findOne () функции возвращают Promise, поэтому вы можете связать их без использования обратных вызовов с меньшим количеством кода:

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 вернет Обещание вашему маршруту.

0 голосов
/ 28 марта 2019

Вы не указали порт, который прослушивает сервер. Попробуйте добавить код ниже, это может помочь вам

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);


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...