victoria
v0.0.3
Published
Simple object-hash relational mapper library for Redis, targeting Node.js 6 and above.
Downloads
12
Readme
Victoria
Simple object-hash relational mapper library for Redis, targeting Node.js 6 and above.
This project is a work in progress
Be aware! Before the project reaches its first release-candidate version, APIs may change without warning and documentation may differ from the actual code base.
Usage
const Database = require('victoria'),
db = new Database
db.define('user', {
name: {
type: String,
index: [ 'unique', 'matcing' ],
minLength: 4,
maxLength: 16,
match: /^[a-z0-9_.]+$/
},
password: {
type: String,
private: true,
md5: true
},
age: {
type: Number,
index: 'range',
min: 0,
max: 99
},
status: {
type: String,
index: 'matching',
enum: [ 'pending', 'verified', 'suspended' ],
default: 'pending'
}
})
db.connect()
// create record
db.create('user', {
name: 'foo',
password: 'bar',
age: 42
})
.save()
.then(user => console.log(`user created: ${user.id}`))
.catch(err => console.error('something exploded! :(' + '\n' + err.stack))
// fetch record with id
db.find('user', '576d132b12b437226f116ea6')
.then(user => console.log(user ? `${user.name} is ${user.age} years old` : 'user not found :('))
// query records
db.query('user')
.where({ age: { '>=': 18 } })
.except({ status: [ 'pending', 'suspended' ] })
.fetch()
.then(users => console.log(users))
const search = 'adam'
db.find('user', { name: `*${search}*` })
.fetch()
.then(console.log)
Installation
With npm:
npm install victoria
Credits
victoria
borrows concepts and inspiration from Michel Martens' ohm.
Topics (to be explained later)
- Model functionality
- Serialization & private fields (
toObject()
,toJSON()
,select()
) - Update data
- Validation
- Setters
- Getters
- Dynamic defaults
- Serialization & private fields (
- Indices
- References & population
- Record creation
- Querying
- CLI (coming soon)
Todo
- General field list parsing & cache
- Better structure to cover Redis data types:
Model
Hash
(extract from the currentModel
implementation)Collection
Set
SortedSet
List