React和NodeJS:如何从服务器向客户端发送数据?

时间:2018-09-29 13:16:52

标签: javascript json node.js reactjs next.js

我想将响应的数据从服务器发送到客户端。我将NodeJS服务器与NextJS和React一起使用。

我在服务器上使用此功能:

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()函数中,我想返回主体值... 此功能将从此时开始运行:

server.post('/', (req, res) => {
            var MailChimpError = addEmailToMailChimp(req.body.email);
            console.log(MailChimpError); 
            res.send(MailChimpError); //send data to client
            res.end("success!");
        })

我尝试将返回正文值保存在变量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环境中经验不足。如果您能给我具体解决方案,我将不胜感激。谢谢您的答复。

1 个答案:

答案 0 :(得分:0)

以下是使用来自函数public void setAcc(String a) { m_acc.setText(a); } 的响应的正确方法,因为它是异步函数。有关更多示例,您可以refer

我将addEmailToMailChimp更改为接受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