React 和 NodeJS:如何将数据从服务器发送到客户端?
React and NodeJS: How can i send data from server to client?
我想将响应数据从服务器发送到客户端。我使用带有 NextJS 和 React 的 NodeJS 服务器。
我在服务器上使用这个功能:
function addEmailToMailChimp(email) {
var request = require("request");
var options = {
method: 'POST',
url: 'https://XXX.api.mailchimp.com/3.0/lists/XXX/members',
headers:
{
'Postman-Token': 'XXX',
'Cache-Control': 'no-cache',
Authorization: 'Basic XXX=',
'Content-Type': 'application/json'
},
body: { email_address: email, status: 'subscribed' },
json: true
};
request(options, function (error, response, body) {
//if (error) throw new Error(error);
return body; //return the body Value
});
return request();
}
在嵌套的 request()
函数中,我想 return 正文值...
从这一点开始函数将是 运行:
server.post('/', (req, res) => {
var MailChimpError = addEmailToMailChimp(req.body.email);
console.log(MailChimpError);
res.send(MailChimpError); //send data to client
res.end("success!");
})
我尝试将 return 正文值保存在变量 MailChimpError
中,并尝试在服务器控制台中显示此变量。但它不起作用。这是第一个问题。
第二个问题:如果退出,我想将MailChimpError
变量发送给客户端以显示一些错误。在服务器上,我使用函数 res.send(MailChimpError)
。我在客户端的 handleSubmit()
函数如下所示:
handleSubmit() {
const email = this.state.email;
this.setState({email: ""});
fetch('/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({email:email}),
}).then((res)=> console.log(res.body)) //display the body value from server
}
我该怎么做?我在 Node.js 环境中几乎没有经验。如果您能告诉我具体的解决方案,我将不胜感激。感谢您的回复。
下面是使用函数 addEmailToMailChimp
的响应的正确方法,因为它是一个异步函数。如需更多示例,您可以refer
我将 addEmailToMailChimp
更改为接受一个 callback
,然后我将其作为第二个参数传递给 request
,该参数将在异步操作完成后执行。
var request = require("request");
function addEmailToMailChimp(email, callback) {
var options = {
method: 'POST',
url: 'https://XXX.api.mailchimp.com/3.0/lists/XXX/members',
headers:
{
'Postman-Token': 'XXX',
'Cache-Control': 'no-cache',
Authorization: 'Basic XXX=',
'Content-Type': 'application/json'
},
body: { email_address: email, status: 'subscribed' },
json: true
};
request(options, callback);
}
在您的 server.js
文件中
server.post('/', (req, res) => {
addEmailToMailChimp(req.body.email, (error, response, body) => {
// This is the callback function which is passed to `addEmailToMailChimp`
if(error){
console.log('error', error);
res.status(500).send({msg: 'Sorry, something went wrong :('})
}
else{
res.status(200).send(response); //send data to client
}
});
})
我想将响应数据从服务器发送到客户端。我使用带有 NextJS 和 React 的 NodeJS 服务器。
我在服务器上使用这个功能:
function addEmailToMailChimp(email) {
var request = require("request");
var options = {
method: 'POST',
url: 'https://XXX.api.mailchimp.com/3.0/lists/XXX/members',
headers:
{
'Postman-Token': 'XXX',
'Cache-Control': 'no-cache',
Authorization: 'Basic XXX=',
'Content-Type': 'application/json'
},
body: { email_address: email, status: 'subscribed' },
json: true
};
request(options, function (error, response, body) {
//if (error) throw new Error(error);
return body; //return the body Value
});
return request();
}
在嵌套的 request()
函数中,我想 return 正文值...
从这一点开始函数将是 运行:
server.post('/', (req, res) => {
var MailChimpError = addEmailToMailChimp(req.body.email);
console.log(MailChimpError);
res.send(MailChimpError); //send data to client
res.end("success!");
})
我尝试将 return 正文值保存在变量 MailChimpError
中,并尝试在服务器控制台中显示此变量。但它不起作用。这是第一个问题。
第二个问题:如果退出,我想将MailChimpError
变量发送给客户端以显示一些错误。在服务器上,我使用函数 res.send(MailChimpError)
。我在客户端的 handleSubmit()
函数如下所示:
handleSubmit() {
const email = this.state.email;
this.setState({email: ""});
fetch('/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({email:email}),
}).then((res)=> console.log(res.body)) //display the body value from server
}
我该怎么做?我在 Node.js 环境中几乎没有经验。如果您能告诉我具体的解决方案,我将不胜感激。感谢您的回复。
下面是使用函数 addEmailToMailChimp
的响应的正确方法,因为它是一个异步函数。如需更多示例,您可以refer
我将 addEmailToMailChimp
更改为接受一个 callback
,然后我将其作为第二个参数传递给 request
,该参数将在异步操作完成后执行。
var request = require("request");
function addEmailToMailChimp(email, callback) {
var options = {
method: 'POST',
url: 'https://XXX.api.mailchimp.com/3.0/lists/XXX/members',
headers:
{
'Postman-Token': 'XXX',
'Cache-Control': 'no-cache',
Authorization: 'Basic XXX=',
'Content-Type': 'application/json'
},
body: { email_address: email, status: 'subscribed' },
json: true
};
request(options, callback);
}
在您的 server.js
文件中
server.post('/', (req, res) => {
addEmailToMailChimp(req.body.email, (error, response, body) => {
// This is the callback function which is passed to `addEmailToMailChimp`
if(error){
console.log('error', error);
res.status(500).send({msg: 'Sorry, something went wrong :('})
}
else{
res.status(200).send(response); //send data to client
}
});
})