首页 > 解决方案 > 我怎样才能根据字段名称获取空气表记录?

问题描述

我正在使用 Airtable db 针对输入获取数据。我想根据该输入从数据库中获取数据,但我不知道如何实现。

这是我的 fetch API 调用函数

const fetchData = async e => {
    e.preventDefault();

fetch(`https://api.airtable.com/v0/${process.env.AIRTABLE_BASE_ID}/${process.env.AIRTABLE_TABLE_NAME}`, {
      method: 'GET',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        Authorization: `Bearer ${process.env.API_KEY}`,
      },
    })
    .then(response => {
        if (response.ok) {
            return response.json();
        } else {
            throw new Error('Something went wrong');
        }
    })
    .then(rawResponse => {
    console.log(rawResponse);
    })
    .catch(error => {
    customToast.error('Something went wrong.');
    console.log('Error', error);
    });
  };

标签: javascriptairtable

解决方案


Airtable API 有两种不同的 GET 方法。一个会返回一个记录列表,如果您不包含任何查询参数,它最终会为您提供指定表的所有记录。另一个 GET 方法采用 Airtable 记录 ID 并仅返回该记录。

调用列表 GET 请求的查询参数之一filterByFormula. 您可以提供一个计算结果为真/假的有效 Airtable 公式,API 将仅返回公式计算结果为真的记录。

最简单的方法之一是简单地将 Airtable 中的字段与您感兴趣的值进行比较,例如:

{My Field Name}='My Field Value'

GET 请求看起来像:

fetch(
  `https://api.airtable.com/v0/${process.env.AIRTABLE_BASE_ID}/${process.env.AIRTABLE_TABLE_NAME}?filterByFormula={My Field Name}='My Field Value'`, 
  {
    method: 'GET',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
      Authorization: `Bearer ${process.env.API_KEY}`,
    },
  }
)
.then(response => {
  if (response.ok) {
    return response.json();
  } else {
    throw new Error('Something went wrong');
  }
})
.then(rawResponse => {
  console.log(rawResponse);
})
.catch(error => {
  customToast.error('Something went wrong.');
  console.log('Error', error);
});

对于更复杂的比较,Airtable 确实支持各种文本比较功能,例如FIND,它还具有处理正则表达式的功能。

这将返回一个记录列表,即使列表中只有一条记录。如果您要比较的字段可能包含重复值,那么您需要处理 API 响应包含多个记录的情况并决定如何处理。


推荐阅读