繁体   English   中英

尝试在 node.js 中发出 PUT 请求

[英]Trying to make a PUT request in node.js

我正在尝试使用 Javascript 向 node.js 发出 PUT 请求。 基本上,我想做的是让经过身份验证的用户可以更新电话号码和密码。 通常我会使用req.body来让 body 用于发出更新请求,但是整个 body 有一个usernamepasswordphoneNumber 我只需要更新密码和电话号码。 除了登录的注册用户之外,我有一个限制此请求的限制功能,并且我还有一个用于我的更新的模型功能,它是:

 function updateUser(changes, id) { return db("users") .update(changes) .where({id}) }

我还试图确保用户决定更新的密码(或他们当前拥有的密码)是经过哈希处理的。 我正在使用 bcryptjs 来散列密码。 我有两个 post 请求,它们都加密密码(这是我的注册功能)和一个比较加密(我的登录功能)。 我将包括这两个以防万一您需要任何背景信息:

 router.post("/register", async (req, res, next) => { try { const {username, password, phoneNumber} = req.body const user = await Users.findBy({username}).first() if(user) { return res.status(409).json({ message: "Username is already in use", }) } const newUser = await Users.create({ username, password: await bcrypt.hash(password, 14), phoneNumber, }) res.status(201).json(newUser) } catch (err) { next(err) } }) router.post("/login", async(req, res, next) => { try { const {username, password} = req.body const user = await Users.findBy({username}).first() if(!user) { return res.status(401).json({message: "Invalid Username or Password",}) } const passwordValid = await bcrypt.compare(password, user.password) if(!passwordValid) { return res.status(401).json({message: "Invalid Username or Password",}) } const token = jwt.sign({ userId: user.id, }, process.env.JWT_SECRET) res.cookie("token", token) res.json({ message: `Welcome to your plant page ${user.username}!` }) } catch (err) { next(err) } });

当我试图开始我的 PUT 请求时,我已经开始写const {phoneNumber, password} = req.body但我需要在函数中同时使用 phoneNumber 和 password。 这是我开始使用代码的示例:

 router.put("/:id/updateaccount", restrict(), async(req, res, next) => { try { const {phoneNumber, password} = req.body } catch(err) { next(err) } })

我从班上的某个人那里得到了一些帮助,然后我就明白了。 我在const {phoneNumber, password} = req.body的正确轨道上。 剩下的就是这个(或者这是所有的代码):

 router.put("/:id/updateaccount", restrict(), async(req, res, next) => { try { const {phoneNumber, password} = req.body const userUpdate = await Users.updateUser({ phoneNumber, password: await bcrypt.hash(password, 14) }, req.params.id) res.status(200).json({ userUpdate:userUpdate, message: "You have successfully updated your information", }) } catch(err) { next(err) } })

我再次使用 bcrypt 来加密新更新的密码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM