Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

airtable-fetch

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

airtable-fetch

A module that helps fetch an entire Airtable base or parts of it.

  • 0.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

airtable-fetch

npm link Build Status

A module that helps fetch an entire Airtable base or parts of it. This can be useful for running a proxy to avoid the 5/req per second API Limit.

Usage

const { AirtableFetch } = require("airtable-fetch");

or

import AirtableFetch from "airtable-fetch";

then setup with your BaseID, the structure of the views you want to fetch and your API key. The key can also be provided in the AIRTABLE_API_KEY environment variable:

const refresh = AirtableFetch(
  "appYOURBASEID",
  { TableX: ["ViewA", "ViewB"], TableY: ["ViewC"] },
  "YOURAPIKEY"
);

This function returns a promise. So if you just want the data once:

const data = await AirtableFetch(/*setup stuff*/)();

The resulting data uses the _rawJson fields from Airtable and has the following structure:

{
  "TableX": {
    "ViewA": [
      {
        "id": "recsH4J7VZkhCDUVJ",
        "fields": {/*your actual table fields */},
        "createdTime": "2017-07-26T09:44:36.000Z"
      },
      /*...*/
    ],
    "ViewB": [/*...*/]
  },
  "TableY" : {
    "ViewC": [/*...*/]
  }
}

In a proxy scenario you might want to keep the function around to refresh the data periodically. Here's a little example of that using the handy json-server.

const { AirtableFetch } = require("airtable-fetch");
const schedule = require("node-schedule");
const jsonServer = require("json-server");

const refresh = AirtableFetch("appYOURBASEID", {
  TableX: ["ViewA", "ViewB"],
  TableY: ["ViewC"]
});
const server = jsonServer.create();

const refreshJob = schedule.scheduleJob("*/5 * * * *", function() {
  refresh().then(newData => server.use(jsonServer.router(newData)));
});

refreshJob.invoke();
server.listen(3000);

Caveats

Fetching the entire base is my goal, but while the Airtable Schema API is not public, I can't. Once it becomes generally available I'd like fetch everything by default so the module can have the desired simplicity.

This kind of naive approach for a proxy server doesn't really scale to huge bases, but neither does Airtable, really, so its fine (for me, for now).

Changelog

0.1.2

  • update dependencies

0.1.1

  • update dependencies

0.1.0

  • intial release

Keywords

FAQs

Package last updated on 26 Feb 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc