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