firestore-sequelizer
v0.2.5
Published
A simple orm Firestore to feels like in Sequelize
Maintainers
Readme
Firestore Sequelizer
Simple Firebase ORM
If you like to use Sequelize and use models in your backend projects try to use FirestoreSequelizer, some features:
- Create Models for your Collections;
- Create Single Doc Collections;
- Construct Select query's like Sequelize using where and orderBy;
- Default Attributes values for Collection Models;
- Attributes Validation;
- Sync command to update Collection Structure;
- Observators for model attribute change;
- Model Rollback;
- Subcollection Support;
Installation
To use lib just start your firebase-admin normally.
const admin = require("firebase-admin");
const firebaseSequelizer = require("firestore-sequelizer");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "..."
});
firebaseSequelizer.initializeApp(admin);Model Definition
const {defineModel} = require("firestore-sequelizer");
const User = defineModel("users", {
name: "",
email: "",
admin: {
type: "boolean",
required: true,
},
});CRUD operations
Create record;
let user = await User.create({name: "John" , email: "[email protected]", admin: false});To find by id;
let user = await User.findOne({where:{id: "XsYsmvl3scnadAs"}});To find all not admin users ordened by name using where and order;
let users = await User.findAll({where:{admin: false}, order: [["name", "asc"]]});update user record using user instance;
let user = await User.findOne({where:{id: "XsYsmvl3scnadAs"}});
user.name = "other name";
await user.save();Update user record using user static class;
await User.update( {name: "other name"}, {where: {id: "XsYsmvl3scnadAs"}});Delete User record using user static class;
let user = await User.findOne({where:{id: "XsYsmvl3scnadAs"}});
user.destroy();Observables
const User = defineModel("users", {
name: "",
email: "",
admin: {
type: "boolean",
required: true,
},
});
User.prototype.onData(field, value, data){
//field = "name", value = "other name", data = rest of attributes
}
let user = await User.findOne({where:{id: "XsYsmvl3scnadAs"}});
user.name = "other name";###Subcollections
const CashRegister = defineModel("cashRegister", {
value: 0
});
const User = defineModel("users", {
name: "",
email: "",
admin: {
type: "boolean",
required: true,
},
}, {subcollections: [CashRegister]});
let user = await User.findOne({where:{id: "XsYsmvl3scnadAs"}});
let users = await User.findAll({where:{name: "Johnny"}});
user.createCashRegister({value: 0})
user.updateCashRegister({value: 56})
user.deleteCashRegister({where: {id: "23sdanKSsnfeo32Js"}})