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

モデル上のマングースfindOneは約束を返しますか?

    findOne 非同期です 関数、それから戻る1つの方法は、callbackを使用することです。 関数

    module.exports.isAdmin = function(user_id, callback) {
      var params = {'roles': 'admin'};
    
      dao.findOne(params, function(err, user) {
        if (err) {
          logger.error(err);
          callback && callback(false);
        }
        if (_.indexOf(user.roles, 'admin') != -1) {
          logger.info("admin user: " + user._id);
          if (user._id == user_id)
              callback && callback(true);
        }
        callback && callback(true);
      });
    };
    
    isAdmin(userId, function(v) {
        console.log(v);
    })
    

    もう1つの方法は、 findOneでPromiseを取得することです。 、このドキュメントで述べられているように、.exec() あなたに本格的な約束を与えます。 Promiseでも 、要件を満たすために、結果はコールバック関数を介して返される可能性があります。

    module.exports.isAdmin = function(user_id, callback) {
      var params = {'roles': 'admin'};
    
      var queryPromise = dao.findOne(params).exec();
      queryPromise.then(function(user) {
          if (_.indexOf(user.roles, 'admin') != -1) {
            logger.info("admin user: " + user._id);
            if (user._id == user_id)
              callback && callback(true);
          }
        }, function(err) {
          callback && callback(false);
      });
    };
    



    1. PythonでRedisを使用する方法

    2. ブラウザで実行されているJavaScriptからRedisサーバーに直接接続できますか?

    3. MongoDB InvalidDocument:オブジェクトをエンコードできません

    4. Node.js、Socket.io、Redis pub / subの大容量、低遅延の問題