jamztang of MagicSketch
12/23/2016 - 3:55 AM

Find Specific Record using primary key in Airtable https://gist.github.com/magicsketchweb/9cefe00c7cba02d95537e44f03c25842

Find Specific Record using primary key in Airtable

https://gist.github.com/magicsketchweb/9cefe00c7cba02d95537e44f03c25842

// GET https://hook.io/jamztang/airtable_find?apiKey=<key>&baseId=<base>&tableName=<table>&key=<key>&value=<value>

var Airtable = require('airtable');
var request = require('request');
var async = require('async');
var _ = require('lodash');

module['exports'] = function echoHttp (hook) {
    var p = hook.params;
    var apiKey = p["apiKey"];
    var baseId = p["baseId"];
    var tableName = p["tableName"];
    var view = p["view"];
    var key = p["key"];			// search key
    var value = p["value"];     // search value
  
    var select = {};
  	
    if (typeof view === 'string') {
      select["view"] = view;
    }

    base = new Airtable({ apiKey: apiKey }).base(baseId);

    var allRecords = [];

    base(tableName).select(select).eachPage(function page(records, fetchNextPage) {
      
        if (typeof key === 'string' && typeof value === 'string') {
          allRecords = allRecords.concat(records.filter(function(item) {
            return item.get(key) === value
          }));
        } else {
          allRecords = allRecords.concat(records);
        }

        // To fetch the next page of records, call `fetchNextPage`.
        // If there are more records, `page` will get called again.
        // If there are no more records, `done` will get called.
        fetchNextPage();

    }, function done(error) {
        if (error) {
            console.log(error);
            hook.res.end(JSON.stringify({'success': false, 'message': error}));
            return;
        }

        hook.res.end(JSON.stringify({'success': true, 'records': allRecords}));
    });

};