Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hph/ormur
A simple, sane & modern ORM library for Node.js
https://github.com/hph/ormur
Last synced: 10 days ago
JSON representation
A simple, sane & modern ORM library for Node.js
- Host: GitHub
- URL: https://github.com/hph/ormur
- Owner: hph
- License: mit
- Created: 2016-03-09T20:06:08.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-03-29T21:54:24.000Z (over 8 years ago)
- Last Synced: 2024-10-13T07:41:01.362Z (25 days ago)
- Language: JavaScript
- Homepage:
- Size: 23.4 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Ormur
[![Package Version](https://img.shields.io/npm/v/ormur.svg)](https://www.npmjs.com/package/ormur) [![Build Status](https://travis-ci.org/hph/ormur.svg?branch=master)](https://travis-ci.org/hph/ormur) [![Test Coverage](https://img.shields.io/codecov/c/github/hph/ormur.svg)](https://codecov.io/github/hph/ormur?branch=master) [![License](https://img.shields.io/npm/l/ormur.svg)](https://tldrlegal.com/license/mit-license)
> A simple, sane & modern ORM library for Node.js
## Features
- High extensibility and behaviour customization via inheritance.
- Schema validation and custom field validations.
- High-level query interface along with a [Knex](http://knexjs.org/) instance for custom queries.
- Use promises instead of callbacks to interact with the database.
- Default values and value transformations before creating records.
- Automatic `snake_case` (for the database) and `camelCase` (for JavaScript) handling.
- Safe JSON serialization by omitting private fields.And much more - see the example below to get an idea.
## Install
Requires Node.js v4.0.0 or higher.
npm install ormur
## Examples
Check out the [basic example](https://github.com/hph/ormur/tree/master/example/basic)
for an example of a minimal base model and an example model inheriting from it.For an example of how you may share schema between models, check the [advanced
example](https://github.com/hph/ormur/tree/master/example/advanced).The `User` model defined in the above examples could be used like this,
assuming that the relevant database table exists:```javascript
const User = require('./example/basic/user');// Create an instance
const user = new User({ name: 'Hawk', email: '[email protected]', password: 'password' });// Persist it to the database
user.save().then(user => {
console.log(`User ${user.name} with id ${user.id} saved.`);
});// Find users with the name "Hawk"
User.where({ name: 'Hawk' }).then(users => {
// Array of User instances.
console.log(users);
});// Find a user by its primary key and remove it from the database
User.find(1).then(user => user.destroy());// Or, maybe more succintly
User.destroy(1);
```## API
Documentation pending.
### Static methods
- `Ormur.find` - Find row by primary key.
- `Ormur.where` - Find rows by attributes.
- `Ormur.create` - Create row with attributes.
- `Ormur.destroy` - Remove row by primary key.### Instance methods
- `Ormur#validate` - Validate attributes.
- `Ormur#save` - Insert row into database with attributes from instance.
- `Ormur#update` - Update existing row in database with attributes from instance.
- `Ormur#destroy` - Remove row from database by primary key of instance.
- `Ormur#setDefaults` - Set default values to instance attributes.
- `Ormur#merge` - Merge two objects (inheritance helper).