0.1.2 • Published 4 years ago

@kasar/kkk-crud v0.1.2

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

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:password@127.0.0.1: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:password@127.0.0.1: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 or post process the data, You can define in the services folder

  • precreate(db, data)
  • preread(filter)
  • postread(db, dataset)

Running tests

$ npm test

License

MIT

0.1.2

4 years ago

0.1.1

4 years ago