0

Mongoose.js で Koa.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 に答える