【发布时间】:2021-04-25 13:16:07
【问题描述】:
我正在构建一个 mern expo 应用程序登录和登录页面。单击登录按钮时,它应该登录,但我无法从后端获取数据,尽管我已经在路由器 express 中进行了查找查询。我相信我的代码会帮助你更好地理解。
routeSignIn.js
const express = require("express");
const router = express.Router();
const User = require("../models/User");
router.post("/", async (req, res) => {
User.findOne({ email: req.body.email }).then((user) => {
if (!user) {
return res.status(404).json("Email or password is incorrect");
} else {
const foundUser = res.json(user);
}
});
});
module.exports = router;
服务器.js
const express = require("express");
const app = express();
const mongoose = require("mongoose");
const url = "mongodb://localhost/my-project1";
mongoose.connect(url, { useNewUrlParser: true });
const con = mongoose.connection;
app.use(express.json());
//Router
const routeSignIn = require("../route/routeSignIn");
app.use("/getUser", routeSignIn);
con.on("open", () => {
console.log("Database is connected...");
});
const server = app.listen(3000, () => {
const { address, port } = server.address();
console.log(`Server started. Listening at http://${address}:${port}`);
});
这就是问题所在,我无法从路由器获取它
登录.js
const loginHandle = (email, password) => {
axios
//The address here is my laptop IP address, because i wanted to link my mern server with expo server
.get("http://192.168.29.7:3000/getUser")
.then((res) => {
if (!res) {
Alert.alert("Invalid User, Username or password is incorrect.");
}
})
.catch((err) => {
console.log("Error fetching data : ", err);
});
if (data.email.length == 0 || data.password.length == 0) {
Alert.alert("Email or password field cannot be empty");
}
};
App.js
const authContext = useMemo(
() => ({
signIn: async (email) => {
const userToken = String(foundUser);
try {
await AsyncStorage.setItem("userToken", userToken);
} catch (err) {
console.log("SignIn error", err);
}
dispatch({ type: "LOGIN", email: email, token: userToken });
},
}),
[]
);
正如您在上面看到的,我想要做的是在路由(在 routeSignIn.js 中)与特定用户之后,我想要获取该数据(来自 signIn.js)并将该数据传递到 App.js 以调度它。请注意,reducers 函数与 dispatch 位于同一文件(App.js)中。
【问题讨论】:
-
你在哪里使用
authContext -
在初始化授权上下文的同一个文件中,即App.js
标签: reactjs mongodb express mern reducers