sql >> データベース >  >> NoSQL >> Redis

ノード/redisとコールバックの制御フローの問題?

    client.smembersの理由がわかりません およびclient.get (Redisルックアップ)は、単なるステートメントではなくコールバックである必要があります。これにより、作業が非常に複雑になります。

    それがノードです。 (このトピックはここで十分な回数議論されたと確信しています。他の質問に目を通します。間違いなくそこにあります)

    socket.broadcastを呼び出す前に、すべてのルックアップが実行されたことを確認するにはどうすればよいですか。 ?

    それがerrです コールバック関数で。これはちょっとノードの標準です-コールバックの最初のパラメータはエラーオブジェクト(null すべてがうまくいけば)。したがって、次のようなものを使用して、エラーが発生していないことを確認してください。

    if (err) {
      ...    // handle errors.
      return // or not, it depends.
    }
    
    ... // process results
    

    しかし、これは非常に厄介なようです。

    あなたはそれになれるようになる。コードが適切にフォーマットされ、プロジェクトが巧妙に構造化されている場合、私は実際にそれが素晴らしいと感じています。

    その他の方法は次のとおりです。

    • ライブラリを使用して非同期コードフロー(Async.js、Step.jsなど)を制御する
    • スパゲッティスタイルのコードが混乱していると思われる場合は、結果を処理する関数をいくつか定義し、匿名ではなくパラメーターとして渡します。


    1. 日時のフィールドごとに最新のMongoDBレコードを取得する

    2. Redis +ActionController::ライブスレッドが死んでいない

    3. Spring Data MongoDBによって実行されたクエリをログに記録するにはどうすればよいですか?

    4. 大規模なデータベースを効果的に管理する方法