MERN router.get请求返回未定义

时间:2020-07-07 03:35:49

标签: javascript node.js routes axios mern

因此,我正在尝试使用get请求来查找用户的电子邮件并在屏幕上显示信息。为此,我用用户的电子邮件设置了一个本地存储项目,并试图在我的api调用中引用它。但是,在后端方面,当我尝试通过axios呼叫发送电子邮件时,它无法发送到后端,在这里我可以做任何事情。与此TypeError: Cannot read property 'then' of undefined一起收到状态代码500错误。

这是我的router.get函数引发错误

router.get("/user", function(req, res) {
  console.log("id hit");
  console.log(req.data);
  console.log(req.params.email);
  db.User
      .getUserByEmail(req.params.email)
      .then((dbModel) => res.json(dbModel))
      .catch((err) => res.status(422).json(err));
});

这是我的getUserByEmail函数

module.exports.getUserByEmail = function (email, callback) {
  console.log("getUserByEmail", email)
  var query = { email: email };
  console.log(query);
  User.findOne(query, callback);
};

这是我的前端API axios调用

getUser: function(email) {
    console.log("API EMAIL: ",email);
    return axios.get("/api/users/user/", email);
  }

这是我要在其上显示信息的页面上的componentDidMount

 componentDidMount() {
        const userEmail = localStorage.getItem("userEmail");
        this.setState({
            email: userEmail
        }, () => {
            console.log(this.state.email);
            API.getUser(this.state.email)
            .then(data => {
                this.setState({
                    firstName: data.firstName,
                    lastName: data.lastName,
                })
            })
        })
    }

我可以在邮件的前端引用该电子邮件,但是一旦到达后端,则所有内容都不确定。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

module.exports.getUserByEmail = function (email, callback) {
  console.log("getUserByEmail", email)
  var query = { email: email };
  console.log(query);
  User.findOne(query, callback);
};

此函数不返回任何内容 您需要从中返回一些东西。

你可以做

return user.findOne(query, callback);

只要user.findOne返回某物,并且如果它的猫鼬或mongo可能是proimse。

还需要路线

router.get("/user/:email", function(req, res)