[英]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.