【问题标题】:GET Request route MEANGET 请求路由 MEAN
【发布时间】:2018-05-26 06:00:29
【问题描述】:

我正在创建一个 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 路由,它非常适合本地主机/用户 - 只是为了比较

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));
}
});

【问题讨论】:

  • 您正在使用参数,那么您可以将其称为localhost/user/someemail。当您致电localhost/user?email=email 时,您的路线永远不会与提供的路线匹配

标签: node.js express mongoose mean-stack


【解决方案1】:

您以错误的方式调用您的路线,

你可以做这些事情之一。

1) 将您的路由路径更改为/ 正如你所说,你称它为localhost/user?email=email,因为它匹配路由路径/而不是/:email,你可以像req.query.email一样访问它。

2) 改变你的称呼方式 如果您想使用/:email 路由路径,请像localhost/user/someemail 一样调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2013-06-12
    • 2019-04-13
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2021-02-11
    • 2017-02-01
    相关资源
    最近更新 更多