我正在尝试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已正确填充。感谢您的帮助!
发布于 2019-01-07 03:43:53
也许回调函数的问题在于,您首先必须等待
dbo.collection("users").find({})和do
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()https://stackoverflow.com/questions/53874531
复制相似问题