2017-12-11 7 views
0

を値を取得する二つの値が等しい場合、私は外部関数のチェック条件を持って、obj.id === getIdに応じtrueまたはfalseそれがビューまたはブロックをレンダリングユーザー。NodeJs - コールバックに条件ステートメントを使用して値を渡すと、戻って私のルートファイルで

私はコールバックとして動作するようにしようと機能checkUser、それに合格されている値を取得しますが、私は私のルートファイルにtrueまたはfalseの結果を取り戻すことはできません。

ルートファイル

const express = require('express') 
const router = express.Router() 
const fcs = require('../routes/functions') //Global functions file 

    router.get('/:id', fcs.isLoggedIn, function(req, res, next) { 

    getId = req.params.id 

    db.con.query('SELECT * FROM employees where id=?', getId, function(err, results, callback) { 

     if (err) { 
      //some code 
      return 

     } else { 

      try { 

       //some code for getting results to obj{} 

       // here is the checking point that will use the callback 
       if (fcs.checkUser(obj.id, getId)) { 
        res.render('showuser') 

       } else { 
        //some code 
       } 

      } catch (err) { 
       //some code 
      } 
     } 
    }) 
}) 

グローバル関数は

const express = require('express') 
const router = express.Router() 

module.exports.checkUser = function checkUser(uid, id, callback) { 

    // it gets true or false with no problem 
    console.log(uid === id) 

    // Need to send the output of true or false back to the condition checker (route file) 
    callback(uid === id) 

} 

答えて

1

はあなたが別のコールバックを渡すために必要なファイル。私が入れなければならないのはなぜcallback(null, uid === id);

+0

:あなたのcheckUserは、このようなコールバックを呼び出す必要以上

// here is the checking point that will use the callback fcs.checkUser(obj.id, getId, function(err, userValid){ if(userValid){ res.render('showuser'); } else { // some code } )); 

// here is the checking point that will use the callback fcs.checkUser(obj.id, getId, function(userValid){ if(userValid){ res.render('showuser'); } else { // some code } )); 

ノードスタイルのコールバック: あなたのコールバック実装の場合、それはおそらく、次のようになります。 'callback(null、uid === id)'に 'null'が入りますか? – Cadmos

+0

現在の実装では、そうする必要はありません。私はノードスタイルのコールバックのバージョンを提供しています。ノードでは、ほとんどのコールバックはそのような署名 'function cb(err、data)'を持っています。この場合、 'error'に' null'を渡す必要があります。しかし、あなたはする必要はありません。混乱させて申し訳ありません。 – barnski

関連する問題