首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs koajs异步等待未从db.collection.find获得价值

nodejs koajs异步等待未从db.collection.find获得价值
EN

Stack Overflow用户
提问于 2016-08-30 17:55:11
回答 1查看 391关注 0票数 0
代码语言:javascript
复制
    app.use(route.get('/allUsers',async(ctx)=> {
    var usersList = await db.users.find({});

    console.log("data",usersList);

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

这是我的代码,如果我写数据(UserList),我会得到作为输出的函数;如果我写console.log(“console.log”,usersList),那么我会得到

代码语言:javascript
复制
data function (fn){
  cb = fn;

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

这输出什么是错的?

使用

代码语言:javascript
复制
"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"

}

和node --版本v4.5.0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 18:28:06

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

因为co-monk使用thunkify,所以db.users.find()将返回一个thunk,这是async/await无法处理的(我认为这是设计出来的)。

取而代之的是,你可以使用Monk支持的常规承诺:

代码语言:javascript
复制
// Assuming `db` is a Monk instance:
var usersList = await db.get('users').find({});

我发现您需要删除所有对co-monk的调用,否则它的影响将“挥之不去”,上面的代码也将失败。

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

代码语言:javascript
复制
db.users = db.get('users');

// then, later:
let results = await db.users.find(...);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39224320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档