Ich bin bei einem kürzlichen Hackathon-ähnlichen Event auf Airtable gestoßen, als ein Kollege vorschlug, es zur Speicherung und Nutzung unserer Daten zu verwenden. Ich war sehr davon angetan. Zum ersten Mal hatte ich das Gefühl: „Das ist eine Datenbank für mich. Das will ich von einem Datenspeichersystem.“

Kurz gesagt...
Airtable ermöglicht es Ihnen, Tabellenkalkulationen zu erstellen. Jede Tabellenkalkulation ist eine Datenbank.
Stellen Sie sich vor, Sie erstellen einen „Projektfortschrittsverfolgung“. Sie möchten Dinge wie den Namen des Projekts, ob es abgeschlossen ist oder nicht, die Projektkategorie und einige Fotos speichern.
Das wären vier Spalten in der Tabellenkalkulation: Name (Zeichenkette), Abgeschlossen (Kontrollkästchen/Boolesch), Kategorie (Mehrfachauswahl), Fotos (Dateien).
Jede Zeile in der Tabellenkalkulation ist dann ein Eintrag in der Datenbank.

Sie können diese Daten jetzt nicht nur in der schönen Benutzeroberfläche von Airtable anzeigen, sondern auch programmatisch darauf zugreifen. Sie erhalten großartige JSON-APIs für alle CRUD-Aktionen: Erstellen, Lesen, Aktualisieren, Löschen.
Lassen Sie uns etwas bauen: Eine Umfrage!
Wir sind Front-End-Entwickler, also lassen Sie uns etwas Funktionales bauen. Eine Umfrage ist ein einfaches Beispiel für etwas, das wir gestalten und bauen können, und braucht eine Datenbank, um nützlich zu sein. Airtable kann helfen!
Wie wäre es mit einem Formular, bei dem Sie für Ihr Lieblingsemoticons abstimmen?
<form action="#0" id="voting-form" class="voting-form">
<h1>Which of these emojis is your favorite?</h1>
<div>
<select name="emoji_choice" id="emoji_choice">
<option value="👯">👯</option>
<option value="🍑">🍑</option>
<option value="💥">💥</option>
<option value="🍕">🍕</option>
<option value="☠️">☠️</option>
</select>
</div>
<div>
<input type="submit" value="Vote">
</div>
</form>
Senden Sie die Stimmen zur Speicherung an Airtable
Wenn der Benutzer unser Formular abschickt, erstellen wir einen neuen Eintrag in unserer Datenbank (Airtable-Tabellenkalkulation). Wir senden die Daten per POST, direkt über JavaScript, per Ajax. Wir verwenden hier Axios, da es eine nette, abhängigkeitsfreie Ajax-Bibliothek ist.
var form = document.querySelector("#voting-form");
var select = document.querySelector("#emoji_choice");
// When the form is submitted...
form.addEventListener("submit", function(event) {
event.preventDefault();
// POST the data
axios.post(airtable_write_endpoint, {
"fields": {
"Emoji Choice": select.options[select.selectedIndex].value
}
});
});
Erhalten Sie die Ergebnisse von Airtable
Nun möchten wir die Ergebnisse der Umfrage als Diagramm anzeigen. SVG ist großartig dafür. Wir verwenden die D3.js Bibliothek, um uns beim programmatischen Erstellen des Diagramms zu helfen. Wir könnten damit auch einfach nur einige <div>s erstellen, da das Diagramm aus einfachen Rechtecken besteht, aber die Verwendung von D3 öffnet die Tür für zukünftige Raffinessen.
Lassen Sie uns eine Funktion erstellen, die wir aufrufen können, um die Daten zu erhalten und das Diagramm zu erstellen
function getData() {
// zero out data
pollData = {
"👯": 0,
"🍑": 0,
"💥": 0,
"🍕": 0,
"☠️": 0
};
// GET the data
axios
.get(airtable_read_endpoint)
.then(function(result) {
result.data.records.forEach(function(element, index) {
pollData[element.fields["Emoji Choice"]]++;
});
}
Erstellen Sie das Diagramm mit den Daten
Wir können D3.js ein Array von Daten übergeben und es kann ein Diagramm erstellen
function buildChart(data) {
var x = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, 400]);
d3
.select(".chart")
.selectAll("div")
.data(data)
.enter()
.append("div")
.style("width", function(d) {
return x(d) + "px";
})
.text(function(d, i) {
return emojis[i] + " " + d;
});
}
Mit ein wenig CSS-Färbung
.chart {
padding: 20px;
}
.chart div {
font-size: 20px;
text-align: right;
padding: 5px;
margin: 0 0 3px 0;
color: white;
}
.chart div:nth-of-type(1) {
background-color: #FDBE1A;
}
.chart div:nth-of-type(2) {
background-color: #F2B6A0;
}
.chart div:nth-of-type(3) {
background-color: #FFD85A;
}
.chart div:nth-of-type(4) {
background-color: #830C07;
}
.chart div:nth-of-type(5) {
background-color: #999999;
}
Erhalten wir Ergebnisse!

Live-Demo
In dieser Live-Demo reihen wir die oben geschriebenen Funktionen aneinander, damit sie zusammenarbeiten.
Siehe den Pen Airtable Emoji Poll von Chris Coyier (@chriscoyier) auf CodePen.
Wichtige Dinge, die man über die API wissen sollte
Schlüsselgeheimhaltung
Die obige Demo ist *vollständig im Front-End*! Das gefällt mir, aber Sie sollten wissen, dass dabei der API-Schlüssel für diese Datenbank offengelegt wird. Das möchten Sie für nichts Öffentlich Bedeutsames tun, aber für interne Zwecke könnte es in Ordnung sein.
Um Ihren Schlüssel geheim zu halten, würden Sie die API-Aufrufe vom Backend aus machen. Diese Art von Vorgang wird üblicherweise als „API-Proxy“ oder „API-Wrapper“ bezeichnet. Sie würden einen einfachen Code schreiben, der Ajax zu *diesem* aufruft, und *dieser* macht die Anfragen an die API.
Wie es der Zufall will, hat Airtable einen Beispiel-API-Proxy (in Ruby), den Sie sich ansehen können. Hier ist ein weiteres Beispiel in PHP, das Sie sich ansehen könnten.
Die Dokumentation ist großartig
Sie zeigen die API-Dokumentation *in Bezug auf Ihre Datenbanken an*! Die Beispiel-URLs und Parameter sind also die echten, die Sie verwenden.

Wir hätten die Demo vielleicht effizienter gestalten können, indem wir den API-Parameter filterByFormula ausprobiert und ihn angewiesen hätten, uns alle Datensätze zurückzugeben, die einem bestimmten Emoji entsprechen, und die Anzahl zu überprüfen, anstatt selbst zu zählen.
5 Anfragen pro Sekunde
Airtable ist nicht wirklich für massive Produktionsdatenspeicherung mit hoher Leistung gedacht. Ich bin sicher, das ist keine Überraschung. Airtable ist eher für Sie und Ihr Team gedacht als für einen Datenspeicher für Ihr Startup.
Airtable bietet Ihnen auch Formulare
In unserer Demo haben wir unser eigenes Formular erstellt. Das ist nützlich, wenn Sie völlig benutzerdefinierte Dinge tun müssen, aber wir mussten das nicht. Airtable ermöglicht es Ihnen, verschiedene „Ansichten“ Ihrer Datentabellenkalkulationen zu erstellen, einschließlich einer „Formular“-Ansicht.

Sie können das Formular nach Belieben anpassen und Personen Links dazu senden oder das Formular direkt auf Ihrer eigenen Website einbetten. Ja! Ein Formularersteller, der sich ideal zum Sammeln strukturierter Daten eignet!
Wenn das, was Sie bauen, ziemlich datumspezifisch ist, können Sie auch Kalenderansichten erstellen, um Daten auf diese Weise anzuzeigen und damit zu interagieren.

Bauen Sie los
Was fällt Ihnen ein, wenn Sie an das Potenzial einfacher und benutzerfreundlicher Datenspeicherung und eines Tools wie Airtable denken?
Wenn Ihnen die Idee gefällt, sich nur um das Front-End (Web oder mobiler Client) zu kümmern und jemand anderen den gesamten Backend-Stack verwalten zu lassen, sollten Sie sich Firebase ansehen.
Firebase läuft auf der Google Cloud Platform, was bedeutet, dass es unglaublich gut skaliert, und sie haben gerade eine Reihe neuer Funktionen eingeführt, so dass sie heutzutage weit über eine reine „Datenbank“ hinausgehen.
Schauen Sie sich die Firebase-Videos von Google I/O 2016 an, wo sie all die neuen Sachen ankündigen. Alle Videos sind in dieser I/O 2016 YouTube-Playlist verfügbar.
Ich habe Firebase selbst schon ein wenig genutzt, bevor sie zu Google kamen, aber ich war sehr beeindruckt von der Einfachheit und ich bin Nutzer der Google Cloud Platform, die sehr einfach zu bedienen ist (auch mit Node.js), daher ist die Idee, dass Firebase all das praktisch Plug-and-Play macht, sehr aufregend.
+1 für Firebase, es ist auch Echtzeit, komplett Front-End und sicher, wenn Sie es über deren Einstellungen konfigurieren.
Ich werde mir Airtable aber auf jeden Fall auch ansehen.
Die Live-Demo funktioniert bei mir nicht. Ich benutze Chrome, aktuell, keine Plugins, Ubuntu 14.04.
Ich benutze auch Chrome, laufe Mint 17.2; das Codepen funktioniert für mich, aber das einzige Emoji, das angezeigt wird, ist der Totenkopf mit gekreuzten Knochen. Die anderen erscheinen nur als leeres Feld.
Dasselbe hier = auch kaputt. Linux Mint 17.3 XFCEish (auch bekannt als Ubuntu 14.04 mit LTS Enablement Stack). Das Ändern der Kodierung oder der Schriftart half nicht.
Auch einige Skriptcodes scheinen Amok zu laufen = Hunderte von Fehlern in der Konsole (Firefox) auszugeben.
cu, w0lf.
Toller Artikel, Chris. Ich bin auch ein großer AirTable-Fan.
Wenn Sie mit einer statischen Website arbeiten (z. B. GitHub Pages oder surge.sh) und keine Möglichkeit haben, einen API-Proxy zu erstellen, können Sie Ihrer Tabelle einen schreibgeschützten Benutzer hinzufügen und dessen Token verwenden.
Dieser Kommentar war eine *absolute Lebensrettung* – vielen Dank fürs Posten.
Sehr cooler Artikel Chris. Vielen Dank für die Ausarbeitung!
Hallo, toller Artikel und gut, neue Anwendungen kennenzulernen. Ich bin schon am Anfang stecken geblieben, da ich nur Dokumentation für Node- oder Curl-Umgebungen finden konnte, während Ihr Beispiel JavaScript ist? Wahrscheinlich bin ich ein wenig begriffsstutzig, aber ich weiß nicht, wie Curl oder Node sich zu JavaScript verhalten oder vergleichen? Danke.
curl bedeutet in diesem Zusammenhang einfach *eine URL, die Sie aufrufen können und die die Daten ausgibt*. Genau das brauchen Sie in (clientseitigem) JavaScript, um Ajax zu verwenden, um die Daten abzurufen.
Sie werden dies also in der API-Dokumentation für curl sehen
In (clientseitigem) JavaScript, mit einer Ajax-Bibliothek wie axios, würden Sie etwas wie das hier tun