kkk-crud
v0.2.0
Published
kkk-crud
Downloads
3
Readme
kkk-crud
Installation
kkk-crud requires node v7.6.0 or higher for ES2015 and async function support.
$ npm install kkk-crud
Quick start
Src Directory Structure
├── db
│ ├── models // define the models
│ │ ├── db.advertise.js
│ │ └── db.base.js // base for all models
│ └── services
│ └── db.advertise.js // define the services
└── index.js
Example
const DB = require('kkk-crud');
const db = new DB({
dbName: `example`,
uri: `mongodb://username:[email protected]:27017/example`,
options: {
poolSize: 10,
useNewUrlParser: true,
},
}, './db');
(async () => {
await db.init();
let instance = await db.crud('advertise');
let create = await instance.create({
type: 'type',
title: 'title',
url: 'url',
image: 'image',
target: 'target',
});
console.log(await instance.read({limit: 1 }));
})();
API
Configuration
const dbRoot = './db'; // define the root of models and services, base on process.mainModule
const dbConf = { // define the db config
dbName: `example`,
uri: `mongodb://username:[email protected]:27017/example`,
options: {
poolSize: 10,
useNewUrlParser: true,
},
};
const db = new DB(dbOptions, dbRoot);
Models
Each collection need define a model, such as:
{
week: { // field name
type: String, // field type
required: true, // required or not
primary_key: true, // primary_key or not
enum: ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri'], // allowed field value
'default': 'Mon', // if value is empty, will fill the default, support value or function
prefix: (data) => {}, // prefix the data, run in first
},
}
Create
let instance = await db.crud('advertise'); // get the collection instance
let value = {
type: 'type',
title: 'title',
url: 'url',
image: 'image',
target: 'target',
};
await instance.create(value); // insert value to the collection
Read
let instance = await db.crud('advertise'); // get the collection instance
await instance.read(); // get dataset from the collection, default page = 1, limit = 10
await instance.read({id : 'uuid'}); // get document with the id
await instance.read({page: 0, limit: 10}); // get dataset from the collection with page & limit
await instance.read({filter: {title: 'tit' }}); // get dataset from the collection with filter which title like '%tit%'
await instance.read({sort: {updated_at: -1} }); // get dataset from the collection and sort by updated_at
Update
let instance = await db.crud('advertise'); // get the collection instance
await instance.update({
id: ['uuid1', 'uuid2'],
data: {title: 'new title'}
}); // update the document which '_id' in this id list, id is required
Delete
This operate will update the document status with 'deleted', infact the record still in database
let instance = await db.crud('advertise'); // get the collection instance
await instance.delete({
id: ['uuid1', 'uuid2']
}); // delete the document which '_id' in this id list, id is required
Services - Pre & Post
Sometimes, we need
pre process
orpost process
the data, You can define in the services folder
- precreate(db, data)
- preread(filter)
- postread(db, dataset)
Running tests
$ npm test
License
MIT