@xxx123321

Как отправить данные из mongodb?

Я использую драйвер mongodb.

Есть база 'qq' и коллекция 'bb' .

router.get('/1',(ctx) => {
    mongoClient.connect(url, function(err, client){
        client.db("qq").collection("bb").find({}).toArray((err, users)=>{
            ctx.body = users
            console.log(users)
            client.close()
        })
    })
})


При таком запросе, в консоль выводится то что ожидаю, а вот ctx.body = users
ничего не выдаёт
что я делаю не так ?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
насколько понимаю koa?

что бы koa дожидался Вашего асинхронного действия в роуте, нужно возвращать промис:
router.get('/1', ctx => new Promise(resolve => {
    mongoClient.connect(url, (err, client) => {
        client.db("qq").collection("bb").find({}).toArray((err, users) => {
            ctx.body = users;
            console.log(users);
            client.close();
            resolve();
        });
    });
}));


P.S. открывать новый коннект с БД на каждый запрос не очень то хорошо...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы