firestore-sequelizer
v0.2.5
Published
A simple orm Firestore to feels like in Sequelize
Downloads
8
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"}})