AirTable API 通过电子邮件查找记录

Bil*_*ill 2 node.js airtable

我试图通过在用户表中查找用户的电子邮件来查看用户是否存在,如果不存在,那么我将插入用户。

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);
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

] AirtableError {
[api]   error: 'NOT_FOUND',
[api]   message: 'Could not find what you are looking for',
[api]   statusCode: 404
[api] }
Run Code Online (Sandbox Code Playgroud)

API 文档位于:https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference

我也尝试过

  base('users').select({filterByFormula: `FIND(email = '${email}')`}, function(err, record) {....
Run Code Online (Sandbox Code Playgroud)

并得到错误

Airtable: `select` takes only one parameter, but it was given 2 parameters. Use `eachPage` or `firstPage` to fetch records.
Run Code Online (Sandbox Code Playgroud)

Hei*_*erg 9

find方法只能检索带record-id参数的记录。例如,

base(table_name)
   .find(record_id, function (err, record) 
       {...}
   )
Run Code Online (Sandbox Code Playgroud)

要检索过滤的记录,有select带参数的方法filterByFormula。例如,

base(table_name)
   .select({
      filterByFormula: `email = "${email}"`
   }).firstPage((err, records) 
      {...}
   )
Run Code Online (Sandbox Code Playgroud)

或者如果我们需要检索记录而不是电子邮件,

filterByFormula: `NOT(email = "${email}")`
Run Code Online (Sandbox Code Playgroud)

以上过滤器检索所有记录或电子邮件与所需电子邮件不等于的记录。我们还可以使用其他诸如AND等。

注意:您可以使用以下参数对结果进行筛选、排序和格式化:

  • 字段例如fields: ["Reference No.", "Name of the Candidate"]
  • 按公式过滤 例如filterByFormula: "NOT({Reference No.} = '')"
  • 最大记录数例如maxRecords: 1
  • 页面大小例如pageSize: 100
  • 排序例如sort: [{field: "Reference No.", direction: "desc"}]
  • 查看例如view: "My View"

要查找有关上述参数的更多信息,请查看您的基础的 API 文档。

希望这可以帮助!