此代码重构如何不等效?
How is this Code Refactor Not Equivalent?
我只是不明白这个重构代码是如何不等价的。前者按预期工作,后者 returns 404.
登录成功:
router.post('/login', passport.authenticate('local'), (req, res) => {
var userInfo = { username: req.user.username };
res.send(userInfo);
});
抛出错误 xhr.js:178 POST http://localhost:3000/user/login/ 404 (Not Found)
:
const authController = require('./controllers/authController');
router.post('/login', authController.login);
其中 authController
是:
const mongoose = require('mongoose');
const User = require('../models/User');
const passport = require('../passport');
exports.login = passport.authenticate('local'), (req, res) => {
var userInfo = { username: req.user.username };
res.send(userInfo);
}
两种情况下的请求headers完全相同。
我错过了什么?
您正在尝试用一个参数替换两个参数。逗号运算符不是那样工作的。您需要公开两个导出。
const authController = require('./controllers/authController');
router.post('/login', authController.authLocal, authController.login);
你的出口将是
const mongoose = require('mongoose');
const User = require('../models/User');
const passport = require('../passport');
exports.authLocal = passport.authenticate('local');
exports.login = (req, res) => {
var userInfo = { username: req.user.username };
res.send(userInfo);
}
我只是不明白这个重构代码是如何不等价的。前者按预期工作,后者 returns 404.
登录成功:
router.post('/login', passport.authenticate('local'), (req, res) => {
var userInfo = { username: req.user.username };
res.send(userInfo);
});
抛出错误 xhr.js:178 POST http://localhost:3000/user/login/ 404 (Not Found)
:
const authController = require('./controllers/authController');
router.post('/login', authController.login);
其中 authController
是:
const mongoose = require('mongoose');
const User = require('../models/User');
const passport = require('../passport');
exports.login = passport.authenticate('local'), (req, res) => {
var userInfo = { username: req.user.username };
res.send(userInfo);
}
两种情况下的请求headers完全相同。
我错过了什么?
您正在尝试用一个参数替换两个参数。逗号运算符不是那样工作的。您需要公开两个导出。
const authController = require('./controllers/authController');
router.post('/login', authController.authLocal, authController.login);
你的出口将是
const mongoose = require('mongoose');
const User = require('../models/User');
const passport = require('../passport');
exports.authLocal = passport.authenticate('local');
exports.login = (req, res) => {
var userInfo = { username: req.user.username };
res.send(userInfo);
}