我正在使用Koa.js框架和Mongoose.js模块。
通常从MongoDB获得结果,我这样编写代码:
var res = yield db.collection.findOne({id: 'my-id-here'}).exec();
但是我需要对名为“ items”的数组的每个元素执行此行。
items.forEach(function(item) {
var res = yield db.collection.findOne({id: item.id}).exec();
console.log(res) // undefined
});
但是,此代码无法运行,因为yield在函数中。如果我这样写:
items.forEach(function *(item) {
var res = yield db.collection.findOne({id: item.id}).exec();
console.log(res) // undefined
});
我也没有得到res变量的结果。我试图使用“ generator-foreach ”模块,但这种方式不起作用。
我知道这是我对Node.js的语言素养缺乏了解。但是你们能帮我找到一种方法吗?
谢谢大家,我已经使用“ CO ”模块完成了此操作。谢谢。
var co = require('co');
items.forEach(co(function* (item) {
var img = yield db.collection.findOne({id: item.id}).exec();
}));
编辑:使用最新版本的CO,您需要co.wrap()才能工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句