pouchdb-model2
v0.0.11
Published
model object for pouchdb
Downloads
0
Readme
pouchdb-model2
Model for pouchdb.
Define methods and validations to subclasses.
Feature
- custom model class
- CQRS's saga
- observable
Install
npm i pouchdb-model2
Gitter
https://gitter.im/pouchdb-model2/community
API
Model
Extends
example:
class User extends Model {
constructor(name) {
super();
this.name = name;
}
changeName(name) {
this.name = name;
}
}
constructor({ id, rev } = {})
static reg([ModelSubclass]) / static getModel(type) / getModel(type)
class User extends Model { ... }
User.reg(); // register Model's subclass
class Book extends Model {
callUser(id){
// get UserModel
const UserModel = this.getModel("User");
const user = await UserModel.get(id);
user.changeName("test name");
user.save();
}
}
Book.reg();
const BookModel = User.getModel("Book");
const book = new BookModel();
static set db(db) / static get db()
set pouchdb to model class
const DB = require("pouchdb");
DB.plugin(require("pouchdb-adapter-memory"));
DB.plugin(require("pouchdb-find"));
const db = new DB("default", { adapter: "memory" });
const Model = require("pouchdb-model").Model;
Model.db = db; // when Model set db
class User extends Model {}
class Book extends Model {}
User.db; // exist
Book.db; // exist
// or overwrite
const db2 = new DB("default", { adapter: "memory" });
User.db = db2;
static find(req) : Model[]
look https://pouchdb.com/api.html#query_index , but overwrite selector: {type: modeType}
and delete fields
const users = await User.find({
selector: {
name: { $regex: "^leo" }
}
});
const user = users[0]; // is exist , then type is User
console.log(user instanceof User); // true
static findRows(req) : any[]
return json[] , see find
.
wait continue ...
Observable
Vue example
class User extends Model{...}
const { proxy : user , emitter , json} = new User();
emitter.on("set", ({path,value}) => Vue.set(vm.user,path,value));
emitter.on("apply", ( { cxt, fun, argv } ) => );
proxy.changeName("name");
proxy.save();
var vm = new Vue({
data(){
return {
user : json
}
}
})
wait continue ...
Saga
CQRS's saga
wait continue ...
License
Apache 2.0