odme
v2.0.5
Published
Not a real ODM but will ease dealing with any nosql storage
Downloads
59
Readme
odme
ODME is not an ODM library. It helps you create a class to keep model logic and has some default logic such as setter, getter, masking and creating id with prefixes. All these behaviours can be changed easily at defining your modle classes. It has an extension to support Couchbase and you can add your own extension to support other storages.
How to use
You can create your model classes extending Base class of odme.
Base = require('odme').Base
class User extends Base
props: {
name:
schema: Joi.string()
whiteList: true
age:
schema: Joi.number().min(0)
whiteList: true
total_logins:
schema: Joi.number().min(0)
whiteList: false
}
user = new User { name: 'Arash', age: 32, city: 'Sydney', total_logins:10 }
console.log user.key #user_mJLGt-e6
console.log user.doc
# {
# name: 'Arash',
# age: 32,
# docType: 'user',
# docKey: 'user_mJLGt-e6'
# }
console.log user.mask()
# {
# name: 'Arash',
# age: 32,
# docType: 'user',
# docKey: 'user_mJLGt-e6'
# }
user.doc.city = 'Tehran'
console.log user.doc
# {
# name: 'Arash',
# age: 32,
# city: 'Tehran',
# docType: 'user',
# docKey: 'user_mJLGt-e6'
# }
console.log user.mask()
# {
# name: 'Arash',
# age: 32,
# docType: 'user',
# docKey: 'user_mJLGt-e6'
# }
console.log user.mask('name,city')
# {
# name: 'Arash',
# city: 'Tehran'
# }
You can extend Base class based on your adapters and set a library as source
to store your doc property in key of your model object. Check odme and Couchbase integration here.
Base = require('../build/main').CB
db = new require('puffer') { host: 'localhost', name: 'test' }, true
class Recipe extends Base
source: db
props: {
name:
schema: Joi.string(),
whiteList: true
ingredients:
schema: Joi.array().items(Joi.string())
whiteList: true
}
recipe = new Recipe { name: 'Pasta', ingredients: ['pasta', 'basil', 'olive oil'] }
console.log recipe.key # recipe_yHr0blT
recipe.save().then ->
#after save you can get it like this
Recipe.get(recipe.key).then (o) ->
console.log o # return Recipe object
How to read this doc?
Base class is holding all the logic related to how to get a document and store it in the model class and how it will masked on outputs. Extensions such as CB are doing CRUD operations on models.
Need more?
- Find the full list of available methods here.
- This documentation is generated by
groc
, you can make a copy of in your local version. - You can run tests locally by
npm test
. Make sure you have development dependencies installed.