Node.js 从后端接收数据返回未定义的数据
在login post端点中的node.js中,我获得了用户的登录数据。我在变量Node.js 从后端接收数据返回未定义的数据,node.js,reactjs,Node.js,Reactjs,在login post端点中的node.js中,我获得了用户的登录数据。我在变量userData中声明req.user.dataValues,并尝试在/data端点中访问它,以便以后可以在前端访问它 Node.js-localhost:4000 router.post('/login',函数(req,res,next){ passport.authenticate('local',函数(错误、用户、信息){ 如果(错误){ 返回下一个(错误) }如果(!user){ console.log('m
userData
中声明req.user.dataValues
,并尝试在/data
端点中访问它,以便以后可以在前端访问它
Node.js-localhost:4000
router.post('/login',函数(req,res,next){
passport.authenticate('local',函数(错误、用户、信息){
如果(错误){
返回下一个(错误)
}如果(!user){
console.log('message:'+info.message);
返回res.redirect(“/login”)
}否则{
请求登录(用户、功能(错误){
如果(错误){
返回下一个(错误);
}
让userData=req.user.dataValues;
路由器.get('/data',(req,res)=>{
console.log(userData)
res.json({user:userData})
})
res.json({redirectUrl:“app”,user:req.user.dataValues});
});
}
})(req、res、next);
});
我正在使用下面的代码从node.js的/data
端点获取数据。我没有得到任何错误,但结果是未定义的,我想知道为什么?我需要这个数据在我的前端建立登录等
react.js-localhost:3000
测试=()=>{
取回(“http://localhost:4000/data")
.then(res=>console.log(res.json()))
.那么(
(结果)=>{
console.log(结果)
},
(错误)=>{
console.log(错误)
}
)
}
我在express上运行了一些测试。看起来您以错误的方式定义了/data
端点
您在匿名函数中定义端点,因此它只存在于函数的作用域中
你该走了
router.get('/data', (req, res) => {
console.log(userData)
res.json({user: userData})
})
在
router.post('/login)
之外,您是否通过添加适当的头来允许跨源资源共享(CORS)?您也通过next(err)
返回错误,但您似乎没有处理它,这是我的CORS设置app.use(function(req,res,next){res.header(“访问控制允许源”,“*”;res.header(“访问控制允许头”,“源,X请求,内容类型,接受”);next();});app.use(cors)
我不确定下一步(err)
另一种可能是因为您对\login
和\data
端点的变量都使用了res
,您实际上并没有发送对原始请求的响应。我已经考虑过这一点,但用户数据在/login
POST端点中。我无法访问/data
中的数据。我的意思是我不知道怎么做。使用passport中的会话。当登录成功时,您可以从这里了解情况,将数据存储在会话中,并使用200状态码或重定向进行响应。当请求/data时,在会话中查找存储的值(如果存在),并返回相同的值。我正在使用/login
POST中的序列化用户
函数和/data
端点中的反序列化用户
函数。但是不起作用。你介意给我举个代码例子吗?会有很大帮助的!序列化和反序列化不会存储在会话中,而是使您的数据可用于存储在会话中。您实际应该使用的是express中的会话中间件。您可以按照教程进行操作,也可以按照描述中链接的github repo进行操作。