0
我从来没有这样做过。我创建了myModule.GetRecord()
,我可以看到recordset
已成功获得预期记录。 然而,ret
在router.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;