Как вернуть ctx в mangodb - PullRequest
       8

Как вернуть ctx в mangodb

0 голосов
/ 20 декабря 2018

Я пытаюсь использовать Koa вместо express, и у меня возникает проблема с возвратом ctx.

Вот мой код:

router.get("/user/:id", async (ctx, next) => {
  mongodb.connect(url, { useNewUrlParser: true }, (err, db) => {
    if (err)
      throw ("error => " + err);
    else {
      var dbo = db.db("test");
      dbo.collection("users")
      .find({})
      .toArray((err, res) => {
        if (err)
          throw ("error => " + err);
        db.close();
        console.log(res);
        ctx.body = {
          "message": "GOT IT"
        }
      })
    }
  });
});

Проблема в том, что ctx неизвестен в обратном вызове.Любая идея о том, как я могу поместить его в обратный вызов?

кстати Res заполнен правильно.Спасибо за помощь!

1 Ответ

0 голосов
/ 06 января 2019

Возможно, проблема с обратным вызовом заключается в том, что сначала нужно дождаться

dbo.collection("users").find({})

И do

toArray()

Я использую библиотеку koa-mongo.Эта библиотека вводит монго в контекст.Открывать и закрывать соединение mongodb не нужно.

server.js

import Koa from 'koa'
import Mongo from 'koa-mongo'

const app = new Koa()
app.use(new Mongo(dbConfig))

В роутере

 let db = ctx.mongo
 const result = await db.collection("users").find({})
 if (!result) {
      return []
 }
 return result.toArray()
...