GET请求路由MEAN

时间:2017-12-12 14:03:03

标签: node.js express mongoose mean-stack

我正在创建一个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));
}
});

1 个答案:

答案 0 :(得分:0)

你以错误的方式呼叫你的路线,

你可以做其中的一件事。

1)将路线路径更改为/ 如你所说,你称之为localhost/user?email=email,因为这与路径路径/而非/:email匹配,您可以像req.query.email一样访问它。

2)更改您调用它的方式 如果您想使用/:email路径路径,请将其称为localhost/user/someemail