flat and relational model orm
Inspired by siebel business component.
Example
const Frm = ; //defined the instance for db connectionconst frm = "protocol": "mysql" "host": "127.0.0.1" "port": 3306 "database": "test" "user": "test" "password": "test" "charset": "utf8mb4" //define the modelconst FeedOrder = frm; ;const Feed = frm FeedOrderdefFeedOrderdef //use the model to do CRUD operationsconst orders = await FeedOrder); //generate and write database schemaawait frm;
API
Most methods return promise, so you can use await model.method()
.
model.create(row)
: create a record, this method does NOT return promise. userecord.save()
to write to dbmodel.find({fields: string|array, filter: object, sort: string, offset: number, limit: number})
: query, return records array.model.findOne()
: same parameters likefind()
, but return the first found recordmodel.findAll({fields: string|array, filter: object, sort: string, limit: number, pageSize: number}, cb)
: find all records page by page.cb
is(records)
function, support promise return;model.count(filter: object)
:model.exists(filter: object)
:model.insert(rows: object|array)
: batch create records and save to dbmodel.update({set: object, filter: object})
: directly update matched records in dbmodel.remove({filter: object, limit: number})
: directly remove matched reocrds in dbmodel.increase({set: object, filter: object})
: make the field increment/decrement in dbrecord.save()
: save the new record or updated record to dbreocrd.copy()
:record.remove()
: remove the record in db
Filter
Inspired by mongodb.
{a: 1, b: {$gt: 1}, c: [1, 2, 3], d: '*h*'}
: equals to sqlwhere a=1 and b>1 and c in (1, 2, 3) and d like '%h%'
{$or: [{a: 1}, {b: 2}]}
: equals to sqlwhere a=1 or b=2
License
Licensed under MIT
Copyright (c) 2016 kiliwalk