@ryanforever/airtable

1.2.14 • Public • Published

airtable

Airtable API wrapper with some extra methods

usage

const Airtable = require("@ryanforever/airtable")
const airtable = new Airtable({
    key: process.env.AIRTABLE_KEY,
    baseId: process.env.DOLLARSONG_BASE_ID,
})

airtable.create("Users", {
    name: "hello world",
    age: 25
})

methods

// with table name in config
const Airtable = require("@ryanforever/airtable")
const airtable = new Airtable({
    key: process.env.AIRTABLE_KEY,
    baseId: process.env.AIRTABLE_BASE_ID
})

upsert records

Will create if record does not exist, and update if does exist, based on the fields specified as fields

await airtable.upsert({
    table: "My Table",  // name of table you want to upsert in
    fields: ["id"],     // field(s) to match
    records: [
        { id: "abc123", name: "ryan forever" }
    ]
})

update records

await airtable.update("My Table", [
    {
        id: "recxVksa5oZdLKPTY", 
        fields: {
            name: "ryan forever", 
            age: 21
        }
    }
])

create a schema of your entire base

.createBaseSchema() Automatically creates a comprehensive overview of all the tables/fields/relationships in a base. This method will create a new table in your base.

await airtable.createBaseSchema()

// with options
await airtable.createBaseSchema({
    tableName: "Base Schema", // name of the table you want to create. default is base_schema
    description: "This is the schema of this base" // description will be added to this table
})

create fields in a table programatically

you can use .inferFieldTypesFromObj() to get the airtable field names of a given object

// you have an object which you want to get the field types for
let obj = {
    name: "ryan forever",
    age: 23,
    birthday: "1991-08-23T07:00:00.000Z",
    likes: ["apples", "cats", "sushi"],
    active: true
}

let fields = airtable.inferFieldTypesFromObj(obj)

/* 
outputs an array with formatted airtable field schemas
[
  { name: 'name', type: 'singleLineText' },
  { name: 'age', type: 'number' },
  { name: 'birthday', type: 'dateTime' },
  { name: 'likes', type: 'multipleSelects' },
  { name: 'active', type: 'checkbox' }
]
*/

// create the fields in airtable
await airtable.createFields("My Table", fields)

Readme

Keywords

Package Sidebar

Install

npm i @ryanforever/airtable

Weekly Downloads

207

Version

1.2.14

License

ISC

Unpacked Size

702 kB

Total Files

19

Last publish

Collaborators

  • ryanforever