0

我将 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());
//}

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

4

1 回答 1

1

老实说,我真的没有看到您的代码有问题,它应该可以工作,如果您看到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)
于 2014-11-30T13:51:46.077 回答