Skeet Firestore
Skeet Framework Plugin - Firestore
Skeet Firestore Plugin for CRUD Firestore operation with Firestore Converter. Type safe, easy to use, and easy to test.
Installation
$ skeet yarn add -p @skeet-framework/firestore
or
$ yarn add @skeet-framework/firestore
Skeet Firestore TypeDoc
Features
All CRUD operations are supported with Firestore Converter. createdAt and updatedAt are automatically added to the document with Firebase ServerTimestamp.
- Add Collection Item
- Adds Collection Items
- Get Collection Item
- Query Collection Items
- Update Collection Item
- Delete Collection Item
Usage
Initialize
import * as admin from 'firebase-admin' admin.initializeApp()
or
import * as firebase from 'firebase/app' import 'firebase/firestore' firebase.initializeApp({ // Project configuration })
Add Collection Item
import { firestore } from 'firebase-admin' import * as admin from 'firebase-admin' import { add } from '@skeet-framework/firestore' const db = admin.firestore() const data: User = { name: 'John Doe', age: 30, } async function run() { try { const path = 'Users' const docRef = await add<User>(db, path, data) console.log(`Document added with ID: ${docRef.id}`) } catch (error) { console.error(`Error adding document: ${error}`) } } run()
Adds Collection Items
import { firestore } from 'firebase-admin' import * as admin from 'firebase-admin' import { adds } from '@skeet-framework/firestore' const db = admin.firestore() const users: User[] = [ { name: 'John Doe', age: 30 }, { name: 'Jane Smith', age: 25 }, // ... more users ... ] async function run() { try { const path = 'Users' const results = await adds<User>(db, path, users) console.log(`Added ${users.length} users in ${results.length} batches.`) } catch (error) { console.error(`Error adding documents: ${error}`) } } run()
Get Collection Item
import { firestore } from 'firebase-admin' import * as admin from 'firebase-admin' import { get } from '@skeet-framework/firestore' const db = admin.firestore() async function run() { try { const path = 'Users' const docId = 'user123' const user = await get<User>(db, path, docId) console.log(`User: ${JSON.stringify(user)}`) } catch (error) { console.error(`Error getting document: ${error}`) } } run()
Query Collection Items
import { firestore } from 'firebase-admin' import * as admin from 'firebase-admin' import { query } from '@skeet-framework/firestore' const db = admin.firestore() // Simple query to get users over 25 years old const simpleConditions: QueryCondition[] = [ { field: 'age', operator: '>', value: 25 }, ] // Advanced query to get users over 25 years old, ordered by their names const advancedConditions: QueryCondition[] = [ { field: 'age', operator: '>', value: 25 }, { field: 'name', orderDirection: 'asc' }, ] // Query to get users over 25 years old and limit the results to 5 const limitedConditions: QueryCondition[] = [ { field: 'age', operator: '>', value: 25 }, { limit: 5 }, ] async function run() { try { const path = 'Users' // Using the simple conditions const usersByAge = await query<User>(db, path, simpleConditions) console.log(`Found ${usersByAge.length} users over 25 years old.`) // Using the advanced conditions const orderedUsers = await query<User>(db, path, advancedConditions) console.log( `Found ${orderedUsers.length} users over 25 years old, ordered by name.` ) // Using the limited conditions const limitedUsers = await query<User>(db, path, limitedConditions) console.log( `Found ${limitedUsers.length} users over 25 years old, limited to 5.` ) } catch (error) { console.error(`Error querying collection: ${error}`) } } run()
Update Collection Item
import { firestore } from 'firebase-admin' import * as admin from 'firebase-admin' import { update } from '@skeet-framework/firestore' const db = admin.firestore() const updatedData: User = { age: 38, } async function run() { try { const path = 'Users' const docId = '123456' const success = await update<User>(db, path, docId, updatedData) if (success) { console.log(`Document with ID ${docId} updated successfully.`) } } catch (error) { console.error(`Error updating document: ${error}`) } } run()
Delete Collection Item
import { firestore } from 'firebase-admin' import * as admin from 'firebase-admin' import { delete } from '@skeet-framework/firestore' async function run() { try { const path = 'Users' const docId = '123456' const success = await delete(db, path, docId) if (success) { console.log(`Document with ID ${docId} deleted successfully.`) } } catch (error) { console.error(`Error deleting document: ${error}`) } }