AirTable API 通过电子邮件查找记录
AirTable API Find record by email
我试图通过尝试在用户的 table 中找到他们的电子邮件来查看用户是否存在,如果它不存在,那么我将插入用户。
var Airtable = require('airtable');
var base = new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(process.env.AIRTABLE_BASE_ID);
app.post('/addUser', (req, res) => {
const { uid, displayName, email, photoURL, provider } = req.query;
base('users').find({filterByFormula: `FIND(email = '${email}')`}, function(err, record) {
if (err) res.status(400).send(err);
console.log('Retrieved', record.id);
base('users').replace([{"fields": { uid, displayName, email, photoURL, provider}}], function(err, records) {
if (err) console.log(err)//res.status(400).send(err);
else console.log(records[0])
res.status(200).send(records[0]._rawJson);
});
});
});
我得到的错误是
] AirtableError {
[api] error: 'NOT_FOUND',
[api] message: 'Could not find what you are looking for',
[api] statusCode: 404
[api] }
API 文档在这里:https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference
我也试过了
base('users').select({filterByFormula: `FIND(email = '${email}')`}, function(err, record) {....
并得到错误
Airtable: `select` takes only one parameter, but it was given 2 parameters. Use `eachPage` or `firstPage` to fetch records.
find
方法只能检索带有 record-id
参数的记录。例如,
base(table_name)
.find(record_id, function (err, record)
{...}
)
要检索过滤记录,有 select
方法和 filterByFormula
参数。例如,
base(table_name)
.select({
filterByFormula: `email = "${email}"`
}).firstPage((err, records)
{...}
)
或者如果我们需要检索记录而不是电子邮件,
filterByFormula: `NOT(email = "${email}")`
以上过滤器检索所有记录或电子邮件不等于所需电子邮件的记录。我们也可以使用其他如AND
等
注意:您可以使用以下参数对结果进行筛选、排序和格式化:
- 字段,例如
fields: ["Reference No.", "Name of the Candidate"]
- filterByFormula 例如
filterByFormula: "NOT({Reference No.} = '')"
- maxRecords 例如
maxRecords: 1
- pageSize 例如
pageSize: 100
- 排序例如
sort: [{field: "Reference No.", direction: "desc"}]
- 查看例如
view: "My View"
要查找有关以上列出的参数的更多信息,请查看 API 基地文档。
希望对您有所帮助!
我试图通过尝试在用户的 table 中找到他们的电子邮件来查看用户是否存在,如果它不存在,那么我将插入用户。
var Airtable = require('airtable');
var base = new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(process.env.AIRTABLE_BASE_ID);
app.post('/addUser', (req, res) => {
const { uid, displayName, email, photoURL, provider } = req.query;
base('users').find({filterByFormula: `FIND(email = '${email}')`}, function(err, record) {
if (err) res.status(400).send(err);
console.log('Retrieved', record.id);
base('users').replace([{"fields": { uid, displayName, email, photoURL, provider}}], function(err, records) {
if (err) console.log(err)//res.status(400).send(err);
else console.log(records[0])
res.status(200).send(records[0]._rawJson);
});
});
});
我得到的错误是
] AirtableError {
[api] error: 'NOT_FOUND',
[api] message: 'Could not find what you are looking for',
[api] statusCode: 404
[api] }
API 文档在这里:https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference
我也试过了
base('users').select({filterByFormula: `FIND(email = '${email}')`}, function(err, record) {....
并得到错误
Airtable: `select` takes only one parameter, but it was given 2 parameters. Use `eachPage` or `firstPage` to fetch records.
find
方法只能检索带有 record-id
参数的记录。例如,
base(table_name)
.find(record_id, function (err, record)
{...}
)
要检索过滤记录,有 select
方法和 filterByFormula
参数。例如,
base(table_name)
.select({
filterByFormula: `email = "${email}"`
}).firstPage((err, records)
{...}
)
或者如果我们需要检索记录而不是电子邮件,
filterByFormula: `NOT(email = "${email}")`
以上过滤器检索所有记录或电子邮件不等于所需电子邮件的记录。我们也可以使用其他如AND
等
注意:您可以使用以下参数对结果进行筛选、排序和格式化:
- 字段,例如
fields: ["Reference No.", "Name of the Candidate"]
- filterByFormula 例如
filterByFormula: "NOT({Reference No.} = '')"
- maxRecords 例如
maxRecords: 1
- pageSize 例如
pageSize: 100
- 排序例如
sort: [{field: "Reference No.", direction: "desc"}]
- 查看例如
view: "My View"
要查找有关以上列出的参数的更多信息,请查看 API 基地文档。
希望对您有所帮助!