mysql_node_orm
Purpose
A simple ActiveRecord
like nodejs module for mysql
database.
It supports has_many
and belongs_to
relationship.
You can find
and find_by*
each field name.
Important: it works synchronously.
Introduction
This module is based on Sannis's node-mysql-libmysqlclient.
Mysql_node_orm adds some simple features as ActiveRecord does.
I'm working on it and I would to expand it also with your help.
So, do not hesitate to contact me for any question or doubts
My mind is open for any collaboration ;)
Installation
For installing this module use
npm install mysql_node_orm
Usage
See files in the spec
folder for examples
Overview
Having a DB as ActiveRecord on Rails wants.
You can able to perform select
insert
and update
using Models
like instances.
var DataType = ;var Adapter = ; var Author = Adapterdeclare'Author' has_many: 'Book' destroy: 'Book' fields: name: type: DataTypeString unique: true age: type: DataTypeInt ; Book = Adapterdeclare'Book' belongs_to: 'Author' fields: name: type: DataTypeString pages_number: type: DataTypeInt methods: { this; return 'foobar ' + bar; } { return 'test method' } ; var author = Author;var books = authorbooks book = name: 'Foobar book'; bookpages_number = 1024; books; author; Adapter;
Adapter(host, user, pwd, database, port)
- it is the main class
var Adapter = ;var adapter = 'localhost' 'root' 'password' 'db_name' 3306;
DataType (used to declare the fields)
- DataType.String # the VARCHAR type
- DataType.Int # the INT type
- DataType.Boolean # the TYNINT type
(tmporarly incompleted)
// To use the datatypevar DataType =
Model
(Static methods)
Model.find( id /* as NUM */ )
# returns the instance of the model if found. Otherwise nullModel.find( 'all' )
# returns an Array instance contaning all model found by performing theselect
. Empty array if no record foundModel.find( 'first' )
# returns the instance of the model representing the first matched record if found. Otherwise nullModel.find_by( where, options, limit )
where (Object)
```javascipt
where = {
field_foo_name: field_foo_value,
field_bar_name: field_bar_value,
}
```
options (Object)
```javascript
options = {
includes: ['table_foo_name', 'table_bar_name'],
joins: {
table_foo_name: { // INNER JOIN table_foo_name
field_bar_name: { // ON field_bar_name
table_xxxx_name: 'field_xxxx_name' // = table_xxxx_name.field_xxxx_name
}
}
}
}
```
LIMIT
sql condition
limit (Number) Used as Model.find_by_foo_field_name( value )
# return an Array containing the result ofselect * from table_foo_name where FOO_FIELD_NAME = VALUE
. A single Model instance if field is declared as unique
Todo
What I'm going to do:
-
has_many_through relations
-
DataType conversion
-
migrations
-
More documentation is coming... ;)
Done
- Delete model and its
dependencies
- Implement events
- Fields validation