knex-dal-has-many

2.0.1 • Public • Published

knex-dal-has-many

Has-many relation mixin for knex-dal

Installation

npm install knex-dal-has-many

Usage

Given dal configuration

var hasMany = require('knex-dal-has-many');
var dal = require('knex-dal');
var itemsDal = require('./items/dal');
var knex = require('../services/db');
 
var table = 'grids';
var createAndUpdateFields = ['title'];
 
module.exports = dal({
    table: table,
    knex: knex,
    softDeleteColumn: softDeleteColumn,
    mixins: [
        hasMany({
            methods: {
                create: 'createWithItems',
                update: 'updateWithItems',
            },
            relations: [{
                table: 'items',
                foreignKey: 'grid_id',
                field: 'items',
                methods: {
                    create: itemsDal.create.bind(itemsDal),
                    update: itemsDal.update.bind(itemsDal),
                    remove: itemsDal.remove.bind(itemsDal)
                }
            }]
        })
    ],
    pick: {
        create: createAndUpdateFields,
        update: createAndUpdateFields
    }
});

Allows to store hierarchical data with one function call:

var gridsDal = require('./grids/dal');
 
gridsDal.createWithItems({
    title: 'new grid',
    items: [
        { title: 'item 1' },
        { title: 'item 2' }
    ]
});

Above code will create record in grids table and then create two related records in grid_items table.

Available methods

create

Create record with child records

update

Update record with child records

Package Sidebar

Install

npm i knex-dal-has-many

Weekly Downloads

4

Version

2.0.1

License

ISC

Last publish

Collaborators

  • boo1ean