【问题标题】:How to return ctx in mangodb如何在mongodb中返回ctx
【发布时间】:2018-12-20 18:59:53
【问题描述】:

我正在尝试使用 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 已正确填充。 感谢您的帮助!

【问题讨论】:

    标签: node.js koa


    【解决方案1】:

    也许回调的问题在于你必须先等待

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 2021-05-21
      • 2021-03-12
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多