Code Snippets
Here you can find the code snippets for the common scenarios and use cases while working with Rowy.
Accessing data from another collection
The following is a code snippet that shows how to access data from another collection and display it as a list of options using the connector field.
const firestoreCollectionConnector: Connector = async ({ db, query, row, user }) => {
// 1️⃣ Edit Collection: connect to Firestore collection
const collectionId = "lwjShow"
// 2️⃣ set max results you want to show in the dropdown
const maxResults = 5
// 3️⃣ Edit field: connect to Firestore field to filter by in the input text
const queryField = "noun"
// Map result: use as it is or shape the returned data as need
const resultsFormatter = (doc) => ({ id: doc.id, snapshot: doc.data() })
// Logic for data retrieval, no edits needed here
const collectionRef = db.collection(collectionId).limit(maxResults)
if (query === "") {
return (await collectionRef.get()).docs.map(resultsFormatter)
}
const end = query.replace(/.$/, (c) => String.fromCharCode(c.charCodeAt(0) + 1));
return (await collectionRef.where(queryField, ">=", query).where(queryField, "<", end).get())
.docs.map(resultsFormatter)
};
Accessing data from an external API using a Connector
The following is a code snippet that shows how to access data from an external API and display it as a list of options using the connector field.
const apiConnector: Connector = async ({query, row, user}) => {
const response = await fetch(`https://api.boardgameatlas.com/api/search?name=${query}&client_id=JLBr5npPhV`)
const {games} = await response.json()
return games
};
Accessing data from the parent collection in a subtable subcollection.
Following is a code snippet of how to access a field (here fieldName
) from the parent collection in a subtable subcollection.
const parentDoc = await ref.parent.parent.get()
const fieldNameValue = parentDoc.get("fieldName") // fieldName is in the parent table