2012-01-22 3 views
0

私は、多くの場合、デザインの面で問題が発生しました。 res.json(pages, 200)findOneのコールバックに移動すると、このスクリプトは完全に機能します。回避ローカル変数は

JavaScriptに関しては間違ったパターン/コードデザインに従っていますか、またはpagesをグローバルにすることを除けば、res.json()をコールバックから外しておくソリューションがありますか?

答えて

6

問題は、一致が見つかった場合にBook.findOneコールバックを実行して実行することです。その後、res.jsonを呼び出し、pagesを引数として渡しています。この時点までにコールバックが実行されていないことを理解することは重要です。コールバック関数内でレスポンスを移動できますか?

Book.findOne({title: 'First Book'}, function (err, doc) { 
    res.json(doc.pages, 200) 
}) 
+0

はい、これは問題ありません。 コードは非同期的に実行され、厳密には1つの行から別の行に実行されるわけではないので、これはコールバックを介して作業するためにJavascriptのより一般的な使用法です。 –

+1

@ daemonfire300コードは非同期では実行されません。コールバックは非同期に呼び出されます。 – fent

関連する問題