0

我无法将对象从 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 的方式上是否做错了什么?谢谢

4

2 回答 2

1

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

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

const newStudy = req.body;
table.create(newStudy, function(err, record) {  
  // ...
});
于 2019-05-07T14:35:48.150 回答
0

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

app.post('/api/submit', jsonParser, async (req, res) => { 
    table.create({
        "title": `${req.body.post0.title}`} ...
于 2019-05-07T05:37:39.310 回答