AirTable API Найти запись по электронной почте - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь увидеть, существует ли пользователь, пытаясь найти его электронную почту в таблице пользователя, если его нет, тогда я вставляю пользователя.

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);
    });
  });
});

Ошибка I get is

] 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.

1 Ответ

1 голос
/ 02 апреля 2020
Метод

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 и др. c.

Примечание: Вы можете использовать следующие параметры для фильтрации, сортировки и форматирования результатов:

  • поля, например fields: ["Reference No.", "Name of the Candidate"]
  • filterByFormula, например, filterByFormula: "NOT({Reference No.} = '')"
  • maxRecords, например, maxRecords: 1
  • pageSize, например, pageSize: 100
  • sort например, sort: [{field: "Matrix Reference No.", direction: "desc"}]
  • просмотр например, view: "My View"

Для получения дополнительной информации о выше перечисленных параметрах, пожалуйста, проверьте документацию API вашей базы.

Надеюсь, это поможет!

...