나는이 흙 코드 가져 오기 사용하여 우편으로 페이지를 로그인 절차에 로그인 페이지에서 폼 데이터를 전달하기 위해 노력하고있어 :보내기 {} 빈 Node.js를에 퍼와 형태 "후"후
form(id="form-login")
input(type="text", name="email", value="", placeholder="Tu email")
br
input(type="password", name="password", value="", placeholder="Tu contraseña")
br
input(type="submit" value="Conectar")
script.
const formLogin = document.querySelector('#form-login');
const formData = new FormData(formLogin);
formLogin.addEventListener('submit', function(event) {
console.log('Form Data: ', formData);
event.preventDefault();
fetch('/signin', {
method: 'POST',
body: formData
})
.then(function(res) {
res.json();
})
.then(function(data) {
console.log(data)
localStorage.setItem('token', data.token)
})
});
문제 추적 후 그것은이 console.log를 제공합니다.
Form Data: FormData {}
또한 정의되지 않은 req.body입니다. 이 스크립트에 주석을 달고 action="/signin" and method="post"
을 추가하여 양식을 보내면 작동하고 대답이 인쇄되지만 storage.setItem({ token: <token> })
을 호출하면 Uncaught (in promise) TypeError: Cannot read property 'token' of undefined
을 반환합니다.이 스크립트가 데이터를 보내지 않는 이유가 궁금합니다 ... 알아낼 수 없습니다. ... 그래서 어떤 도움이 많이 apreciated됩니다.
로그인 완료 기능 : 미리
function signIn (req, res) {
if (!req.body.email) return res.status(200).send({message: 'No recibo el usuario'})
User.findOne({ email: req.body.email }, (err, user) => {
if(err) return res.status(500).send({ message: err })
if(!user) return res.status(404).render('login', { title: 'Intenta loguearte de nuevo' })
user.comparePassword(req.body.password, (error, isMatch) => {
if (error) return res.status(500).send({ message: error })
if (!isMatch) {
return res.redirect('login')
} else {
req.user = user
res.status(200).send({
message: 'Te has logueado correctamente',
token: service.createToken(user)
})
//$window.localStorage.setItem({token: service.createToken(user)}); // NO WORKS
return res.body = service.createToken(user) // TRYING THIS WITHOUT KNOWLEDGE ABOUT WHAT AM I DOING :O
}
})
})
}
감사합니다. 첫째 .then res.json()....
주석 @ MichałSałaciński 제안으로
**** 편집 **** 는, 적어도 응답을 제공하지만, 아직 여기 hapenning 또한 희망, 더 나은 일을 제대로 배울 수 있도록하기 위해 무엇을 알아 보았하지 않습니다 누군가 정확하게 이런 일을하는 법을 설명 할 수 있습니다.
Response: body : ReadableStream
locked : false
__proto__ : Object
bodyUsed : false
headers : Headers
__proto__ : Headers
ok : true
redirected : false
status : 200
statusText: "OK"
type : "basic"
퍼그 사용 경험이 없습니다. 2 개의'then' 호출을 같은 식으로 연결하는 것이 정상입니까? –
네, 약속이 스크립트 태그 안에 있다는 것을 알고있는 한,이 시점에서 pug와 충돌해서는 안됩니다. 예. 연결할 수 있습니다. 여기에서 문서를 확인하십시오 -> [link] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) –