繁体   English   中英

从Koa.js中的循环产生猫鼬结果

[英]Yield a mongoose result from a loop in Koa.js

我正在将Koa.js与Mongoose.js结合使用。 我的mongo中有一个名为css的集合。 其中具有以下架构:

_id
css_name
css_value

我有一个包含一个巨大列表的数组,如:

var list = ['font-color', 'back-color', 'font-family', 'back-image', 'back-repeat', ... ];

现在,我声明了一个名为css的猫鼬模型,并执行如下循环:

for(var i = 0; i < list.length; i++) {
   console.log(yield css.findOne({css_name: list[i]}).exec());
}

如果我执行上面的代码,它将在控制台中提供null。 每当我忽略循环时,它就可以完美运行:

//for(var i = 0; i < list.length; i++) {
   console.log(yield css.findOne({css_name: 'font-color'}).exec());
//}

所以问题出在循环上。 谁能建议一种更好的工作方式,使用猫鼬模型从循环中获取所有值?

老实说,我真的没有看到您的代码有问题,它应该可以工作,并且如果您看到null结果是因为查询未返回任何文档,请尝试mongoose.set('debug', true)并执行自己查询。 无论如何,如果您只需要一次获得所有结果,则可以按照以下方式使用co-each

var each = require('co-each')

var styles = ['font-color', 'back-color', 'font-family', 'back-image', 'back-repeat']

// executed in parallel
var results = yield each(styles, function *getStyle(style) {
  return yield css.findOne({ css_name: style }).exec()
})

console.log(results)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM