Передача объекта из React в Express и создание новой записи Airtable - PullRequest
0 голосов
/ 07 мая 2019

У меня проблемы с передачей объекта из React в Express и последующим созданием записи в Airtable.

В ответ я отправляю http-запрос в Express через:

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

Мой код Express:

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!')}
    });   
}) 

Тем не менее, я продолжаю получать сообщения об ошибках из API-интерфейса airtable.ЕСЛИ я заменяю 4-ю строку моего экспресс-кода на:

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

вместо

table.create(newStudy)

, все работает нормально.Кажется, что это должно работать в соответствии с документацией airtablet ... (https://airtable.com/api). Есть ли что-то, что я делаю неправильно с тем, как я манипулирую своими данными в и из JSON? Спасибо

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Похоже, это происходит потому, что вы звоните JSON.stringify(req.body), что вам не нужно делать.

table.create берет объект, а не строку, так что вы захотите сделатькак то так:

const newStudy = req.body;
table.create(newStudy, function(err, record) {  
  // ...
});
0 голосов
/ 07 мая 2019

Я нашел решение, не уверен, что оно очень хорошее, хотя ...

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