Frost?
What isFrost is an ORM (Object Relational Mapping) Library that utilizes Typescript Decorators to simplify working with Firebases's Realtime DB. Frost Focuses on the relations between the database nodes and generates all the needed code for the developer to fetch these nodes with the ones related to them. It also utilizes ReactiveX to provide the developer with observables that listen to the changes on theses nodes. And Of course provide the developer with the utilities to preform basic operations on the database.
Getting Started
Before we head to defining the classes and the relations between them, we need to setup the project.
What you'll need
- Decorators Support in your project. if you don't have it already follow this guide
- Firebase Database credentials to initialize the database client.
Finally you can follow the installation guide and then go through the documentation or follow the quick start guide
Installing the package
npm install @frost-orm/frost-web
Setup
- Pass the firebase configuration object to Frost.initialize function instead of
initializeApp
function from firebase. - Pass a map of the APIs you've defined (this explained in Create A Node section) as the second parameter. the key for each API should be the name that you want to access it by later on.
- This will initialize the Firebase Instance and Frost Instance along with the APIs.
- The initialize function will return an object with the properties:
- firebaseApp: The instance returned by
initializeApp
function from Firebase Web SDK 9. - [keys used in the second parameter]: corresponding API instance.
- firebaseApp: The instance returned by
Frost uses Firebase Web SDK 9 internally. So the Firebase app instance is a SDK 9 instance.
const firebaseConfig = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
messagingSenderId: "...",
appId: "...",
...
};
export const FrostApp = Frost.initialize(firebaseConfig,{
"users":UserApi,
"posts":PostApi,
"courses":CourseApi,
"profiles":ProfileApi,
})
//highlight-start
/**
* Shape of FrostApp
* {
* firebaseApp: FirebaseApp,
* users: UserApi,
* posts: PostApi,
* courses: CourseApi,
* profiles: ProfileApi,
* }
* /
//highlight-end
To access the Firebase App Instance or the APIs Instances
import {FrostApp} from "src/database/frost.ts"
FrostApp.firebaseApp
FrostApp.users
FrostApp.posts
FrostApp.courses
FrostApp.profiles
or you can export each api individually
const firebaseConfig = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
messagingSenderId: "...",
appId: "...",
...
};
const FrostApp = Frost.initialize(firebaseConfig,{
"users":UserApi,
"posts":PostApi,
"courses":CourseApi,
"profiles":ProfileApi,
})
export {
FrostApp.users as UserApi,
FrostApp.posts as PostApi,
FrostApp.courses as CourseApi,
FrostApp.profiles as ProfileApi,
}