knex-odm

Mini-ODM with SQL backend based on Knex.js

Usage no npm install needed!

<script type="module">
  import knexOdm from 'https://cdn.skypack.dev/knex-odm';
</script>

README

Knex.js-based ODM

Install

knex-odm requires knex as peer dependency, so you need to install both:

npm i --save knex knex-odm

Create repositories

const knex = require('./knex');
const { repository, validators } = require('knex-odm');

const User = module.exports = repository(knex, {

  table: 'user',

  schema: {

    'name': 'string',      // type: 'string', required: true

    'nickname': 'string?', // type: 'string', required: false

    'role': {
      type: 'string',
      default: 'student',
      validators: [
        validators.enum('student', 'teacher', 'administrator'),
      ],
    },

  },

  methods: {

    await findByRole(role, limit = 25, offset = 0) {
      return await this.query()
        .where('role', role)
        .orderBy('name', 'asc')
        .limit(limit)
        .offset(offset);
    }

  }

});

Use


async function main() {
    const User = require('./repositories/user');

    const teachers = await User.findByRole('teacher');

    for (const teacher of teachers) {
      console.log(teacher.name, teacher.role);
    }
}