【发布时间】:2021-11-04 21:30:54
【问题描述】:
下面的代码是我在单独的 register.js 中的 fetch 方法。这是我新创建的 js 文件,所以我可以创建我的前端。目前我只是尝试控制台记录此提取的最终结果,但无法获得输出,因为我在尝试发布此内容时遇到错误。
浏览器控制台中的错误: “未捕获(承诺中)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 中,这是我在上面的 register.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";
}
})
}
})}
如您所见,这是一个注册表单。后端一切正常,使用邮递员输入值。我所有的条件提示都在返回(邮箱存在,注册成功)。
但是当我尝试为其创建前端时,我无法获得我定义的提示。就像我故意输入重复的电子邮件时,我无法获得以前仅使用时收到的“电子邮件存在”消息邮递员或只是后端 API 功能。
我觉得我正在尝试做的事情很不对劲。我在为我的 API 创建前端时遇到了问题,我目前没有使用它。
【问题讨论】:
-
你没有回复
JSON...使用result.text()而不是result.json() -
哦,这是一个多么简单的解决方案。起初我认为这与承诺有关。谢谢
标签: javascript node.js express fetch postman