我是ExpressJS和NodeJS的新手。我一直在尝试谷歌,并浏览了几个不同的StackOverflow帖子,但似乎找不到答案。
我跟踪了一个YouTube视频,并创建了一个名为users的数组。我为此创建了get和put方法,我可以调用这些方法,然后使用res.send('message'),它可以工作。但是,每当我试图更新属于特定用户的“名称”时,我总是会得到“未定义”的值。我试过:
users[req.params.id].name = req.body.name以及:
users[req.params.id].name = req.params.name (Should be req.body.name, but still
tried)甚至:
users[req.params.id]={
name: "req.params.body"
} //Which also doesn't work.奇怪的是,当我硬编码它的时候,它就起作用了。虽然邮递员需要一些时间来加载,但是放置一个next()就会使它崩溃。我将其设置为放置Postman,并将“localhost:3000/user/1”设置为请求URL(数组中的索引1)。
硬编码:
users[req.params.id].name = "newSally"这是我的密码:
const express = require('express')
const router = express.Router()
module.exports = router
const morgan = require('morgan')
router.use((req, res, next) =>{
router.use(morgan('dev'))
next()
})
router.route("/:id").get((req, res) => {
res.send(`Getting user with the ID: ${req.params.id}, also known as: ${req.user.name} ${req.user.familyName}, and is: ${req.user.age} years old!`)
}).put((req, res) => {
users[id].name = req.body.name //<--- Sets "undefined" as a new name
}).delete((req, res) => {
res.send(`Deleting user with the ID: ${req.params.id}`)
})
let users =[{name:"Kyle", familyName:"Horton", age:20}, {name:"Sally", familyName:"Myers", age:22}]
router.param("id", (req, res, next, id) =>{
req.user = users[id]
next()
})谢谢!
编辑:尝试将其解析为int (let index = parseInt(req.params.id)),(let index = +req.params.id),以及使用body解析器中间件,但由于一些未知的原因,它们似乎都不起作用。在这一点上,我怀疑我对邮递员做错了什么,而且它发出的是“未定义的”。它似乎也停留在“发送请求”,即使在Webstorm确认(res.send(‘msg))超过了该代码之后。
我将其作为put请求,并将“localhost:3000/user/1”放在请求URL中,在params中将"key“插入"name”,将"value“放入"newSally”。之后,我按下蓝色的“发送”按钮。
我将假设这与代码无关,而是与邮递员有关。谢谢你的帮助:) @Nenad Milosavljevic,@Liki,@Georges Feungap
发布于 2021-09-06 11:30:30
当您在Postman中的Params部分中添加数据时,服务器上的req.query对象中有可用的数据。因此,将代码更改为使用req.query而不是req.body。
users[req.params.id].name = req.query.name;如果希望req.body中的数据可用,则应将其添加到邮递员的Body部分。
发布于 2021-09-06 11:30:56
尝试使用身体解析器中间件。
看看这里:http://expressjs.com/en/resources/middleware/body-parser.html
在express的实例化下面添加此代码块
const bodyParser = require('body-parser')
app.use(bodyParser.json())发布于 2021-09-06 11:39:53
您可以简单地这样做:
let index = +req.params.id;https://stackoverflow.com/questions/69073695
复制相似问题