我正在创建一个MEAN APP,在注册时我想检查一个电子邮件是否已经存在。但是GET请求并没有显示任何内容。也没错。
server.js
...
// Set user routes
const userRoutes = require('./user/user_controller');
app.use('/user', userRoutes);
...'
user_controller.js
router.get('/:email', (req, res) => {
console.log('Requesting user');
User.findOne({'email': req.params.email})
.exec(function(err, user) {
if(err) {
console.log('Error getting the post');
} else {
res.send(user);
}
});
});
GET路由永远不会进入,因为我也没有在路径的开头看到console.log。当我调用localhost / user时,我希望路由能够正常工作?email = email
我有一个POST路由,适用于localhost / user - 只是为了比较
router.post('/', (req, res) => {
user = req.body;
// Validation
req.checkBody('firstName', "Enter a valid firstname").exists().isAlpha();
req.checkBody('lastName', 'Enter a valid lastname').exists().isAlpha();
req.checkBody('email', 'Enter a valid email').exists().isEmail();
req.checkBody('password', 'Enter a valid password').exists().isLength({min:8});
const errors = req.validationErrors();
if(errors) {
res.json({errors: errors});
} else {
User.create(user)
.then((user) => res.send(user));
}
});
答案 0 :(得分:0)
你以错误的方式呼叫你的路线,
你可以做其中的一件事。
1)将路线路径更改为/
如你所说,你称之为localhost/user?email=email
,因为这与路径路径/
而非/:email
匹配,您可以像req.query.email
一样访问它。
2)更改您调用它的方式
如果您想使用/:email
路径路径,请将其称为localhost/user/someemail
。