【发布时间】:2019-09-30 17:21:52
【问题描述】:
我正在尝试执行一个具有 next(); 的 post 函数。在代码中间,所以我从另一个文件中导出函数的定义并尝试从快速路由器调用它。但它没有执行。
--编辑
我已经尝试了上面建议的常规定义,但是当“next();”时它停止了被调用并返回
Cannot POST /registerUser
index.js
[...]
//Definição e Chamada de Componentes
const userLogin = require('./userControl/accessControl');
const userRegister = require('./userControl/registerControl');
[...]
var router = express.Router(); // get an instance of the express Router
//Definição das Rotas
//==============================================================================
router.post('/login', userLogin.login);
router.post('/forgotPassword', userLogin.forgotPassword);
router.post('/registerUser', function(req, res, next) {userRegister.registerUser});
app.use('/', router);
// START THE SERVER
// =============================================================================
app.set('env', 'production');
app.listen(port);
console.log('API Listening on Port ' +port+'');
registerControl.js
exports.registerUser = function(req, res, next) {
var query = "INSERT INTO [user] (name, email, phone, login, password, enabled, profile) VALUES ('example', 'example@abc.si', 'XXXXXXXXXXXX', 'ADMIN', '12345', 1, 'TEST')
global.conn.request()
.query(query)
.then(result => {
var userId = result.recordset[0].id;
console.log(userId);
if (result.rowsAffected[0] == 0) {
res.sendStatus(500);
}
else {
req.body.userId = userId;
next();
}
})
.catch(err => res.json(err));
}, function(req, res) {
var query = "INSERT INTO [user_company] (company_id, user_id) VALUES ("+req.body.companyId+", "+req.body.userId+");"
global.conn.request()
.query(query)
.then(result => {
if (result.rowsAffected[0] == 0) {
res.sendStatus(500);
}
else {
res.sendStatus(200);
}
})
.catch(err => res.json(err));
};
谢谢!
【问题讨论】:
-
您实际上并没有调用中间件函数。您需要使用传递的参数实际执行函数或隐式传递处理程序。想象一下,如果你做了
function(someArgument) { console.log },但log后面没有括号,它实际上不会执行正确吗? -
不明白@AlexanderStaroselsky.. 我该怎么做?
标签: javascript node.js rest express middleware