下面的代码是我在单独的寄存器中的fetch方法。js.这是我新创建的js文件,所以我可以创建我的前端。现在我只是想安慰你。记录这个fetch的结束结果,但是不能得到输出,因为当我尝试POST这个时,我得到了一个错误。
浏览器控制台出错:“Uncaught(in promise)SyntaxError:JSON中位置0处的意外标记S”
fetch(`${rootUrl}api/users/register`,{
method:"POST",
headers:{
"Content-Type": "application/json"
},
body:JSON.stringify({
firstName: firstName,
lastName: lastName,
mobileNo: mobileNo,
email: email,
password: password
})
})
.then(result=>result.json())
.then(result =>{
console.log(result);
})
在userRouter中。js,这是我在寄存器中获取的路由。上面的js:
router.post('/register', (req, res)=>{
userController.register(req.body).then(result => res.send(result))})
并且该路由指向Usercontroller中的此控制器。js:
module.exports.register = (reqBody)=>{
//check if email already exists before registering new user
return User.find({email: reqBody.email}).then((result, error) =>{
if(result.length != 0){
return "EMAIL EXISTS!";
}else{
let newUser = new User({
firstName: reqBody.firstName,
lastName: reqBody.lastName,
email:reqBody.email,
password: bcrypt.hashSync(reqBody.password, 10),
mobileNo: reqBody.mobileNo
})
return newUser.save().then((result, error)=>{
if (error){
return error;
}else{
return "SUCCESFULLY REGISTERED NEW USER";
}
})
}
})}
如你所见,这是一张登记表。在后台一切都很好,使用postman输入值。我的所有条件提示都被返回(电子邮件存在,成功注册)。
但是当我尝试为它创建一个前端时,我无法获得我定义的提示符。就像当我故意输入一封重复的电子邮件时,我无法得到“Email exists”的消息,而我以前只使用 Postman 或只使用后端API功能时得到的消息。
我觉得我做的事情有问题。我在为我的API创建一个前端时遇到了问题,我现在还没有使用它。
3条答案
按热度按时间w8f9ii691#
您返回的是非JSON响应,因此不能使用res。json()。您只是发送文本响应。所以用res.文本()
iyfjxgzm2#
有一些提示需要指出。
rootUrl
,因为之后没有foreslash
。您正在发回文本样式。使用这个代替得到
json
的结果。res.status(200).json({result})
尽量不要在背面使用同步功能。你应该给予它一个更远的距离,或者更确切地说,使用
bcrypt.hash()
和Async Function
混合来删除CallBack Function
,直到它完成。更重要的是,以便检查前一个函数的错误,得到它的正面使用Fetch / Axios.
使用Try/Catch
**方法。axios.request({})
|如果我是你的话。bweufnob3#
我有一个类似的问题,但我只需要使用GET方法,而不是张贴。对于正在寻找async await解决方案的人: