gpt4 book ai didi

javascript - 向 Node.js 发送数据并从 Node.js 获取数据?

转载 作者:行者123 更新时间:2023-12-01 00:30:12 24 4
gpt4 key购买 nike

在我的 React 代码中,我发送了“post”和“get”请求。我认为我的问题出在我的服务器端代码中。

一般

const express = require('express');

const app = express();

const cors = require('cors');
const bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());

const posts = [
{
"postId": 1,
"id": 1,
"title": "To be or not to be",
"body": "Yes, that is the question"
},
{
"postId": 1,
"id": 2,
"title": "So What?",
"body": "What do you want"
}
];

注意:上下文,上面的代码位于问题代码之前

已解决 1) 帖子

用户点击“提交”后请求将数据发送到服务器

问题:

1) “req.body”为空

fetch("http://localhost:3001/create", {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(post)
})
.then(res => this.props.history.push('/posts'))
.catch(err => this.setState({error: true}))

this.setState({
title: "",
body: ""
})
app.post('/create', (req, res, next)=>{
// Request body is empty, why?
console.log(req.body);
})

解决方案:

POST 请求以 JSON 格式发送数据,因为 JSON.stringify(post),我们需要解析此 JSON 数据,以便我们可以使用 app.use(bodyParser.json() );,我们就得到了它。已解决

已解决2)获取

在第一个 get 请求中,我将对象的“id”作为 URL 参数发送,并尝试从服务器接收相应的对象,req 发送正确。

问题:在“findPostById”函数中收到以下错误:

类型错误:无法读取未定义的属性 ID

fetch(`http://localhost:3001/posts/${this.props.match.params.id}`)
.then(res=>res.json())
.then(data=>this.setState({loadedPost: data}))
.catch(err=>console.log(err))
app.get('/posts/:id', (req, res, next)=>{
// Correct, receive id
let id = req.params.id;

findPostById(id, (post, err)=>{
if(err){
console.log(err);
}
else{
res.send(post)
}
})
})

let findPostById = (id, cb)=>{
console.log(id, 'Correctly receive the id');
let post = posts.find((post)=>{
return post.id === id;
})
// Receive: 'TypeError: Cannot read property id of undefined'
console.log(post.id);
if(post){
cb(post, null);
}
else{
cb(null, new Error('Could not find post', id));
}
}

解决方案:

post.id 类型为“number”,id 类型为“string”,由于严格相等,返回 post.id === id; 结果为 false 。因此,我们使用 +id `return post.id === +id;

将 id 转换为数字

最佳答案

对于问题 1,

请尝试添加此内容。

app.use(bodyParser.json());

关于javascript - 向 Node.js 发送数据并从 Node.js 获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58625132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com