filterByFormula 结果创建新记录

filterByFormula Result to Create New Record

我正在使用 Twilio 函数 (node.js) 将所有传入文本加载到 AirTable。我正在使用 2 tables -

收到短信时,我只有 phone 号码。所以我尝试将 FilterByFormula 与 phone 编号一起使用,以从“用户”table.

中检索用户的 UID

这是我的代码 运行 -

exports.handler = function(context, event, callback) {

    var Airtable = require('airtable');
    var base = new Airtable({apiKey: context.AIRTABLE_API_KEY}).base('app######');


    var phone = event.From;
    var format_phone = // format to +1 (###) ###-####

    base('Users').select({
        filterByFormula: `Your Number = "${format_phone}"`,
        view: "Grid view"
    }).eachPage(function page(records, fetchNextPage) {
        records.forEach(function(record) {
            console.log(record.id);
        });
        fetchNextPage();
    }, function done(err) {
        if (err) { console.error(err); return; }
    });

    inputbase = 'Receive Text';
    message = {
        'UID' : ['rec#######'],
        'Inbound Text Date' : Date.now(),
        'Inbound Text Content' : event.Body,
    };

    base(inputbase).create(message, function(err, record) {
      if (err) { console.error(err); return; }
      console.log(record.getId());
      callback(null, message);
    });

};

现在进行测试,UID 是硬编码的,并且工作正常。我不确定如何将 UID 从 filterByFormula 获取到变量中或直接获取到消息变量中。

UID 和 Phone Number 都是“Users”中的唯一值,所以我预计不会收到超过 1 条记录。

谢谢。

试试这个,让我知道结果如何。

    const Airtable = require('airtable');

    exports.handler = function(context, event, callback) {

    const base = new Airtable({apiKey: context.AIRTABLE_API_KEY}).base(context.AIRTABLE_DATABASE);

    const phone = event.From;
    const body = event.Body;

    function createRecord(UID) {
        const today = new Date();
        const date = `${(today.getMonth()+1)}/${today.getDate()}/${today.getFullYear()}`;

        const inputbase = 'Receive Text';

        const message = {
            'UID': UID,
            'Inbound Text Date': date,
            'Inbound Text Content': body,
        };

        base(inputbase).create(message, function(err, record) {
        if (err) { 
            console.error(err);
            callback("error");
            }
            console.log(record.getId());
            callback(null, message);
         });
    }


    base('Users').select({
        filterByFormula: `{Your Number} = "${phone}"`,
        view: "Grid view"
    }).firstPage().then(records => {
        if (!records[0]) {
            console.log("**NO MATCH**");
            createRecord("**NO MATCH**");
        } else {
            console.log("**MATCH**");
            createRecord(records[0].fields.UID);
          }
        })
    .catch(err => {
            console.log(err);
            callback("error");
    });
};