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

node.jsを使用してmongoose(mongodb)の配列に結合するにはどうすればよいですか?

    コードの最大の問題は、コードが同期的に実行されると想定していることですが、そうではありません。非同期で実行されます。したがって、実行時にメッセージはまだ設定されていません

     console.log(messages);
    

    代わりに次のようなことをしてください:

    var userIds = [id1, id2, id3];
    User.find({"_id": {$in: userIds}}, function (err, users) {
      console.log(users);
    });
    

    編集 なるほど、分かりました。 userInfoをさまざまなメッセージに追加する必要があります。これを実現する最も簡単な方法は、非同期モジュールを使用することです。 https ://github.com/caolan/async

    async.map(messages, getUserInfo, function (err, result) {
      if (err) {
        console.log(err);
        return;
      }
      // log all msg with userinfo
      console.log(result);
    });
    
    function getUserInfo (msg, callback) {
      User.findById(msg.userId, function (err, user) {
        if (err) {
           callback(err);
           return;
        }
        msg.user = user;
        callback(null, msg);
      });
    }
    



    1. setDateがバッチスクリプトのeval内で日付を正しく設定していません

    2. redisデータストアのトリガーを実装するにはどうすればよいですか?

    3. Redisバックグラウンドジョブが完了した後、flaskのrender_templateを返すにはどうすればよいですか?

    4. docker-mongodbへのJavaアプリケーション接続を作成します