Airtable 有时 return 有结果,有时没有
Airtable sometimes return results and sometimes not
我正在使用 Node.js 库与 AirTable 通信,official js library。我遇到 filterByFormula
的问题。有时,当我尝试从 AirTable 中查找记录时,我没有得到结果,尽管我很确定应该有一些结果。我的逻辑是,如果我在 AirTable 中找不到记录,我会创建一个新记录。如果找到它,我将更新现有的。此逻辑导致输入两次相同条目的问题。
这是我的查询:
getReservationByID: async (externalID) {
let reservations = await calendarBase('Reservations').select({
view: 'Main View',
filterByFormula: `{External ID} = \"${externalID}\"`,
maxRecords: 1,
}).all();
return (reservations.length > 0) ? reservations[0] : null;
},
而这个函数是这样使用的:
let oldReservation = await getReservationByID(reservation.id);
if (!oldReservation) {
createNewReservation(reservation);
} else {
updateReservation(reservation);
}
如您所见,我必须从 AirTable 获取记录(如果存在),但有时 AirTable 不会返回具有给定 ID 的现有记录,然后我会得到具有相同外部 ID 的副本。我是做错了什么还是有一些我不知道的问题?
我已经设法解决了这个问题。我已经从查询中删除了视图,现在一切正常。如果没有包含视图,Airtable 将搜索 table 中与您的公式匹配的所有记录。如果您指定视图,Airtable 会将其搜索限制在该视图,然后查找与您的公式匹配的所有记录。如果您对放入 select 的视图有过滤器,在我的例子中是 'Main View',那么您可能从脚本中隐藏了某些记录。
我的新查询如下所示:
getReservationByID: async (externalID) {
const reservations = await calendarBase('Reservations').select({
filterByFormula: `{External ID} = \"${externalID}\"`,
maxRecords: 1,
}).all();
return (reservations.length > 0) ? reservations[0] : null;
},
我正在使用 Node.js 库与 AirTable 通信,official js library。我遇到 filterByFormula
的问题。有时,当我尝试从 AirTable 中查找记录时,我没有得到结果,尽管我很确定应该有一些结果。我的逻辑是,如果我在 AirTable 中找不到记录,我会创建一个新记录。如果找到它,我将更新现有的。此逻辑导致输入两次相同条目的问题。
这是我的查询:
getReservationByID: async (externalID) {
let reservations = await calendarBase('Reservations').select({
view: 'Main View',
filterByFormula: `{External ID} = \"${externalID}\"`,
maxRecords: 1,
}).all();
return (reservations.length > 0) ? reservations[0] : null;
},
而这个函数是这样使用的:
let oldReservation = await getReservationByID(reservation.id);
if (!oldReservation) {
createNewReservation(reservation);
} else {
updateReservation(reservation);
}
如您所见,我必须从 AirTable 获取记录(如果存在),但有时 AirTable 不会返回具有给定 ID 的现有记录,然后我会得到具有相同外部 ID 的副本。我是做错了什么还是有一些我不知道的问题?
我已经设法解决了这个问题。我已经从查询中删除了视图,现在一切正常。如果没有包含视图,Airtable 将搜索 table 中与您的公式匹配的所有记录。如果您指定视图,Airtable 会将其搜索限制在该视图,然后查找与您的公式匹配的所有记录。如果您对放入 select 的视图有过滤器,在我的例子中是 'Main View',那么您可能从脚本中隐藏了某些记录。
我的新查询如下所示:
getReservationByID: async (externalID) {
const reservations = await calendarBase('Reservations').select({
filterByFormula: `{External ID} = \"${externalID}\"`,
maxRecords: 1,
}).all();
return (reservations.length > 0) ? reservations[0] : null;
},