如何将Airtable用作后端?

时间:2018-11-27 21:26:54

标签: json api axios airtable

我正在尝试将Airtable用作项目中提交表单的后端。但是,我似乎无法集成API,也不知道问题所在。我正在使用React和axios。

我对JS和Airtable都是新手。

以下是我的错误代码:

提交表单后浏览器出现错误:

空中错误:{“错误”:{“类型”:“ INVALID_REQUEST_MISSING_FIELDS”,“消息”:“在请求正文中找不到字段“ fields””}}

有人可以请我做错了吗?提前非常感谢!

下面是我的代码:

var form = document.querySelector("#bize-ulasin");
if(form) {

form.addEventListener("submit", function(event) {
    event.preventDefault();
axios.post(airtable_write_endpoint, 
    {
        "Content-Type": "application/json"
    } ,
    {
         "fields": {
            "AdSoyad": document.getElementById("#Ad-Soyad"),
            "Email": document.getElementById("#Email"),
            "Telefon": document.getElementById("#Telefon"),
            "Konu": document.getElementById("#Konu"),
            "Mesaj": document.getElementById("#Mesaj"),
            "Ortam": "Websitesi"
        }
    })
    .then(function(response) {
    console.log(response);
        })
        .catch(function(error) {
        console.log(error);
        })
    })
};

3 个答案:

答案 0 :(得分:0)

这似乎与您构造axios调用的方式有关。看来您实际上是将{"Content-Type": "application/json"}作为POST调用中的有效负载而不是第二个参数传递。您应该可以通过re-ordering the parameters in your call进行修复:

axios.post(airtable_write_endpoint, 
    {
         "fields": {
            "AdSoyad": document.getElementById("#Ad-Soyad"),
            "Email": document.getElementById("#Email"),
            "Telefon": document.getElementById("#Telefon"),
            "Konu": document.getElementById("#Konu"),
            "Mesaj": document.getElementById("#Mesaj"),
            "Ortam": "Websitesi"
        },
    }        
    {
        headers: { "Content-Type": "application/json"}
    })
    .then(function(response) {
        console.log(response);
    })
    .catch(function(error) {
        console.log(error);
    })
})

希望有帮助!

答案 1 :(得分:0)

Airtable有一个JavaScript package,可让您以编程方式访问任何Airtable工作表中的任何基础。 Airtable还会为您的基地生成完整的API文档。您可以在以下位置找到您的API:https://airtable.com/api

Airtable API page

选择一个基础,您将看到具有示例调用和所有功能的完整API。

它显示了完整的JavaScript示例:

EXAMPLE USING ENVIRONMENT VARIABLE
# Shell:
$ export AIRTABLE_API_KEY=YOUR_API_KEY

# Node:
const base = require('airtable').base('YOUR_AIRTABLE_BASE');
EXAMPLE USING CUSTOM CONFIGURATION
var Airtable = require('airtable');
Airtable.configure({
    endpointUrl: 'https://api.airtable.com',
    apiKey: 'YOUR_API_KEY'
});
var base = Airtable.base('YOUR_AIRTABLE_BASE');

答案 2 :(得分:-1)

"AdSoyad": document.getElementById("idname")选择相关的html元素,无值

您可以使用"AdSoyad": document.getElementById("Ad-Soyad").value来解决,而无需使用id标记(#),您已经编写了getElementById,不需要#