【问题标题】:nodejs koajs async await not getting value from db.collection.findnodejs koajs async await 没有从 db.collection.find 获得价值
【发布时间】:2017-01-06 13:14:00
【问题描述】:
    app.use(route.get('/allUsers',async(ctx)=> {
    var usersList = await db.users.find({});

    console.log("data",usersList);

    await ctx.render('BrowseAllUsers',{userlist:usersList});
}))

这是我的代码,如果我写 console.log(userList) 但如果我写 console.log("data",usersList);然后我得到了

data function (fn){
  cb = fn;

  if (results && !called) {
    called = true;
    fn.apply(this, results);
  }
}

这个输出有什么问题

使用

"dependencies": {
"babel-core": "^6.13.2",
"babel-polyfill": "^6.13.0",
"babel-preset-es2015": "^6.13.2",
"babel-preset-stage-0": "^6.5.0",
"co": "^4.6.0",
"co-monk": "^1.0.0",
"koa": "^2.0.0-alpha.5",
"koa-bodyparser": "^3.2.0",
"koa-convert": "^1.2.0",
"koa-generic-session": "^1.11.3",
"koa-passport": "^2.2.2",
"koa-route": "^3.1.0",
"koa-static": "^3.0.0",
"koa-validate": "^1.0.6",
"koa-views": "^5.0.2",
"monk": "^3.1.1",
"passport-google-auth": "^1.0.1",
"passport-local": "^1.0.0",
"swig": "^1.4.2"

}

AND 节点 --version v4.5.0

如何获取用户列表中的用户列表我的代码有什么问题

【问题讨论】:

    标签: node.js async-await koa


    【解决方案1】:

    我假设db.usersco-monk 包装集合的结果。

    由于co-monk 使用thunkifydb.users.find() 将返回thunkasync/await 无法处理(我认为是设计使然)。

    相反,您可以使用 Monk 开箱即用的常规 Promise:

    // Assuming `db` is a Monk instance:
    var usersList = await db.get('users').find({});
    

    我发现你需要删除任何对co-monk的调用,否则它的效果会“徘徊”,上面的代码也会失败。

    如果您愿意,您可能仍然可以在 db 中存储对集合的引用:

    db.users = db.get('users');
    
    // then, later:
    let results = await db.users.find(...);
    

    【讨论】:

    • 好的,那么在koa 2中没有必要使用co-monk,否则我必须
    • @PriyaPatil co-monk 和 Koa 2 可能无法很好地协同工作。
    • 谢谢。你!至少花了 3 个小时。
    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 2018-04-08
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多