我正在使用Node.js库与AirTable,官方js图书馆进行通信。我对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得到重复的记录。我是做错了什么还是有什么我不知道的问题?
发布于 2019-03-12 21:45:18
我设法解决了这个问题。我已经从查询中删除了视图,现在一切都正常了。如果未包含任何视图,Airtable将搜索表中与您的公式匹配的所有记录。如果指定视图,Airtable将限制其搜索仅限于该视图,然后找到与您的公式匹配的所有记录。如果在您输入的“select”视图上有一个筛选器,在我的示例“主视图”中,则可能对您的脚本隐藏了某些记录。
我的新查询如下所示:
getReservationByID: async (externalID) {
const reservations = await calendarBase('Reservations').select({
filterByFormula: `{External ID} = \"${externalID}\"`,
maxRecords: 1,
}).all();
return (reservations.length > 0) ? reservations[0] : null;
},https://stackoverflow.com/questions/55111003
复制相似问题