javascript - 我怎样才能根据字段名称获取空气表记录?
问题描述
我正在使用 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);
});
};
解决方案
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 响应包含多个记录的情况并决定如何处理。
推荐阅读
- tensorflow - 如何快速改变 tensorflow/keras 神经网络的权重?
- sqlite - 查找和删除及时接近的记录
- vba - 操作系统的位数是否重要,或者只是我需要担心的应用程序?
- r - 合并来自同一数据框的行
- django - 如何设置我继承的 virtualenv
- php - 如何更新选定的行?
- identityserver4 - 仅在 IdentityServer4 中注销客户端
- java - DataflowRunner 需要 gcpTempLocation,但无法从 PipelineOptions 检索值
- c++ - 将一个数组传递给所有工作项都相同的内核
- python - 麻烦 Webscraping 寻求 alpha