Javascript req.params返回undefined(它实际上以字符串形式返回:itemId,因此它有点未定义),而不是id
这几天我不知道我的代码出了什么问题,也找不到任何解决方案 我还尝试使用query获取id(在车间路线上移动控制器,当然,更改:with the?),以及req.body尝试使用id获取输入,但没有成功 我还尝试了POST和PATCH而不是GET,但都没有成功 这是我的密码: auth.js(控制器) auth.js(路由) 然后在前端,我首先将项目id作为道具传递给AddToCart组件,如下所示: 我从数据库中加载所有项目的车间组件:Javascript req.params返回undefined(它实际上以字符串形式返回:itemId,因此它有点未定义),而不是id,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,这几天我不知道我的代码出了什么问题,也找不到任何解决方案 我还尝试使用query获取id(在车间路线上移动控制器,当然,更改:with the?),以及req.body尝试使用id获取输入,但没有成功 我还尝试了POST和PATCH而不是GET,但都没有成功 这是我的密码: auth.js(控制器) auth.js(路由) 然后在前端,我首先将项目id作为道具传递给AddToCart组件,如下所示: 我从数据库中加载所有项目的车间组件: <ItemS
<ItemStyle key={item._id}>
<h1>title</h1>
<p>{item.title}</p>
<img alt={item.title} src={item.image}></img>
<h1>description</h1>
<p>{item.description}</p>
<h1>price</h1>
<p>{item.price}</p>
<AddToCart itemId={item._id} />
</ItemStyle>
标题
{item.title}
描述
{item.description}
价格
{item.price}
AddToCart组件:
class AddToCart extends Component {
addToCart = async () => {
await fetch(`http://localhost:8090/auth/add-to-cart/:itemId`, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
credentials: 'include',
})
.then(() => {
/* staying on the same page */
return window.location.replace('/shop');
})
.catch(err => console.log(err));
}
render() {
return(
<form encType="application/x-www-form-urlencoded">
<input type="hidden" name="itemId" value={this.props.itemId} />
<button onClick={this.addToCart}>Add To Cart</button>
</form>
)
}
}
类AddToCart扩展组件{
addToCart=async()=>{
待命(`http://localhost:8090/auth/add-到购物车/:itemId`{
方法:“GET”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”,
},
凭据:“包括”,
})
.然后(()=>{
/*保持一致*/
返回窗口。位置。替换('/shop');
})
.catch(err=>console.log(err));
}
render(){
返回(
添加到购物车
)
}
}
如果我从输入中删除type=“hidden”,我实际上可以看到为该项分配了正确的id。有人能解决这个问题吗?如果出于某些原因,我反对stackoverflow政策,请让我知道,我将更新问题。提前谢谢你。这里有几件事你应该做-
http://localhost:8090/auth/add-购物车/${itemId}
以下是你应该做的几件事-
http://localhost:8090/auth/add-购物车/${itemId}
.then()
一起等待。我建议您仅使用wait
。像这样:
var response = await fetch(`http://localhost:8090/auth/add-to-cart/${itemId}`, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
credentials: 'include',
});
另外,如果您注意到,我在上面使用了${itemId}
。如果要在字符串中设置变量。你必须那样使用它。我发现了你的问题
你不应该使用.then()
一起等待。我建议您仅使用wait
。像这样:
var response = await fetch(`http://localhost:8090/auth/add-to-cart/${itemId}`, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
credentials: 'include',
});
另外,如果您注意到,我在上面使用了
${itemId}
。如果要在字符串中设置变量。你必须这样使用它。你说的console.log(itemId)
返回itemId
?它是返回itemId
还是未定义的?你能试着把req.params
也记录下来吗?嗨,谢谢你的回答。它实际上返回:itemId作为字符串(因此不是实际的id),如果不清楚,很抱歉。您说的console.log(itemId)
返回itemId
?它是返回itemId
还是未定义的?你能试着把req.params
也记录下来吗?嗨,谢谢你的回答。它实际上返回:itemId作为一个字符串(所以不是实际的id),如果不清楚,很抱歉。非常感谢,这就是我解决问题的方法(我还必须在addToCart函数中找到id)。@msorr95听到这个消息太好了。请随意接受我的回答;)非常感谢,这就是我解决这个问题的方法(我还必须在addToCart函数中找到id)。@msorr95听到这个消息真是太好了。请随意接受我的回答;)嗨,你救了我!我确实用此行this.props.itemId在函数中获得了itemId,并按照您的建议更改了API点,现在它工作得很好!非常感谢你!!如果你告诉我怎么做,我会接受你的答案(我总是在问题中看到这种评论,但老实说,我不知道接受答案有什么作用)。在Shop组件中,你通过道具将itemId参数传递给AddToCart组件。道具基本上是传递到react组件的参数。道具用于将数据从一个组件传递到另一个组件。在addToCart函数中,没有局部变量“itemId”,因为值在props中。这就是为什么要访问props中的值,我们使用这个.props.itemIdHi Pankaj,我的意思是,在我阅读了您的评论之后,我确实在函数中找到了itemId。要不是你,我是不会解决的。再次感谢你!还有,我接受了你的回答,因为你是第一位,也是最满意的。嗨,你救了我!我确实用此行this.props.itemId在函数中获得了itemId,并按照您的建议更改了API点,现在它工作得很好!非常感谢你!!如果你告诉我怎么做,我会接受你的答案(我总是在问题中看到这种评论,但老实说,我不知道接受答案有什么作用)。在Shop组件中,你通过道具将itemId参数传递给AddToCart组件。道具基本上是传递到react组件的参数。道具用于将数据从一个组件传递到另一个组件。在addToCart函数中,没有局部变量“itemId”,因为值在props中。这就是为什么要访问props中的值,我们使用这个.props.itemIdHi Pankaj,我的意思是,在我阅读了您的评论之后,我确实在函数中找到了itemId。如果不是因为你,我不会
var response = await fetch(`http://localhost:8090/auth/add-to-cart/${itemId}`, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
credentials: 'include',
});