【问题标题】:Passing an object from React to Express and creating a new Airtable record将对象从 React 传递到 Express 并创建新的 Airtable 记录
【发布时间】:2019-05-07 05:04:34
【问题描述】:

我在将对象从 React 传递到 Express,然后在 Express 中创建可播放记录时遇到问题。

在反应中,我通过以下方式向 Express 发送 http 请求:

finalSubmit() {
  const airtableObj = {
    title: 'hi',
  }
  fetch('api/submit',{
    method: 'POST',
    body: JSON.stringify(airtableObj),
    headers: {"Content-Type": "application/json"}
  })
}

我的快递代码是:

app.post('/api/submit', jsonParser, async (req, res) => { 
    const newStudy = JSON.stringify(req.body);   
    await console.log(newStudy); 
    table.create(newStudy, function(err, record) {  
        if (err) {console.log(err); res.json(err)} else {console.log(record), res.json('Success!')}
    });   
}) 

但是,我不断从 airtable api 收到错误消息。如果我将我的快速代码的第 4 行替换为:

table.create({“title”:“hi”} 

而不是

table.create(newStudy)

,一切正常。似乎这应该根据空气表文档工作......(https://airtable.com/api)。我在处理数据进出 JSON 的方式上做错了什么吗? 谢谢

【问题讨论】:

    标签: reactjs express airtable


    【解决方案1】:

    这似乎是因为您正在调用 JSON.stringify(req.body),而您不需要这样做。

    table.create 接受一个对象,而不是一个字符串,所以你需要做这样的事情:

    const newStudy = req.body;
    table.create(newStudy, function(err, record) {  
      // ...
    });
    

    【讨论】:

      【解决方案2】:

      我找到了一个解决方案,但不确定它是否是一个非常好的解决方案......

      app.post('/api/submit', jsonParser, async (req, res) => { 
          table.create({
              "title": `${req.body.post0.title}`} ...
      

      【讨论】:

      • 嗯,您的 req.body 中似乎有一个额外的参数。
      • 啊,是的,我正在从我的反应状态中获取我的参数,其中包含嵌套对象
      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多