如何在MangoDB中返回ctx

时间:2018-12-20 18:59:54

标签: node.js koa

我正在尝试使用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在回调中未知。 关于如何将其放入回调中的任何想法?

btw res已正确填充。 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

也许回调的问题必须要做,您首先必须等待

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

和做

toArray()

我使用koa-mongo库。 该库将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()