2017-04-03 12 views
0

これまでにこれを行う必要はありませんでした。 myModule.GetRecord()を作成しましたが、recordsetが正常に記録されていることがわかります。 retrouter.get()undefinedです。node.js関数を使用して値を返すカスタムモジュールを作成する

私はコールバックで返された値をキャッチする必要があるので、私は信じています。

私はこのモジュール/関数をコールバックのために定義する方法(私が適切に探しているものであれば)、またはこの関数をコールバックのために呼び出す方法を知らない。

私はいくつかの異なるもの、すなわち典型的なものを試しましたGetRecord(ret, function() { ... });しかし、動作するように見えなかったものは見えませんでした。そして私はラインで束を読むが、私が探していると思っているものは見つけられなかった。

私は本当に私はそこに取得する方法について多くを気にしない

、しかしは私が本当にやろうとしているすべてのmm.GetRecord()年代はrouter.get()

にいくつかの使用可能な形で値を返さ持っています - - myModulefile.js ---

'use strict'; 

module.exports = { 

    GetRecord: function (id) { 
     var sql = require('mssql'); 

     sql.connect({ user: 'sa', ... database: 'name' }, function (err) { 
      if (err) { console.log(err); return null; } 
      var cmd = new sql.Request(); 
      cmd.query('select * from Records where id = ' + id, function (err, rs) { 
       if (err) { console.log(err); return null; } 
       if (rs.recordset.length > 0) { 
        console.log('rs[0]', rs.recordset[0]); 
        return rs.recordset[0]; 
       } else { 
        return null; 
       } 
      }); 
     }); 
    } 
}; 

--- myRouter.js ----

const express = require('express'); 
const router = express.Router(); 
const mm = require('../myModule'); 


router.get('/:id', function (req, res) { 
    var id = req.params.id; 
    var ret = mm.GetRecord(id) 
    console.log('ret', ret); 
    if (ret == null) 
     ret = JSON.stringify({ ID: -1, f1: 'unknown' }); 
    res.send(ret); 
}); 

module.exports = router; 

答えて

0

もちろん、私はここに質問を載せた後、答えを見つける。

GetRecord()は、渡されたコールバックを受け取るパラメータで定義する必要があります。そして、コールバックのparamaterの変数fnreturn

GetRecord: function (id, fn) { 
    var sql = require('mssql'); 

    sql.connect({ user: 'sa', ... database: 'name' }, function (err) { 
     if (err) { console.log(err); fn(null); } 
     var cmd = new sql.Request(); 
     cmd.query('select * from Records where id = ' + id, function (err, rs) { 
      if (err) { console.log(err); fn(null); } 
      if (rs.recordset.length > 0) { 
       console.log('rs[0]', rs.recordset[0]); 
       fn(rs.recordset[0]); 
      } else { 
       fn(null); 
      } 
     }); 
    }); 
} 

GetRecord(id, function(ret) { 
    console.log('ret', ret); 
}); 
の代わりに使用されます
関連する問題