MERN router.get 请求返回未定义

MERN router.get request returning undefined

因此,我正在尝试使用获取请求来查找用户的电子邮件并将信息显示在屏幕上。为此,我使用用户的电子邮件设置了一个本地存储项目,并试图在我的 api 调用中引用它。但是,在后端方面,当我尝试通过 axios 调用发送电子邮件时,它并没有到达我可以对其执行任何操作的后端。我收到状态代码 500 错误以及 TypeError: Cannot read property 'then' of undefined

这是我的 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,
                })
            })
        })
    }

我可以在事物的前端引用电子邮件,但是一旦到达后端,一切都不确定。感谢任何帮助。

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

这个函数没有return任何东西 你需要return从中得到一些东西。

你可以

return user.findOne(query, callback);

只要 user.findOne return 是什么,如果它 mongo 或 mongo 它可能是一个承诺。

你还需要路线

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