https://github.com/ppmathis/modelize
Simple ORM written in JavaScript
https://github.com/ppmathis/modelize
Last synced: about 1 year ago
JSON representation
Simple ORM written in JavaScript
- Host: GitHub
- URL: https://github.com/ppmathis/modelize
- Owner: ppmathis
- License: other
- Created: 2012-12-27T19:02:03.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2012-12-31T16:01:19.000Z (over 13 years ago)
- Last Synced: 2025-04-10T21:08:47.831Z (about 1 year ago)
- Language: JavaScript
- Size: 137 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Modelize #
[](http://travis-ci.org/NeoXiD/modelize)
Modelize is a simple ORM written in JavaScript.
## License ##
Apache License (version 2)
## Prerequisites ##
Modelize requires version 0.6.x of Node.js or higher. If you want to run the tests or work on model, you'll want [Vows](https://github.com/cloudhead/vows).
## Installing with [NPM](http://npmjs.org) ##
```
npm install modelize
```
## Adapters ##
Modelize currently implements an in-memory store. More adapters will follow, a socket.io binding is also planned.
## Defining models
Modelize uses a simple syntax for defining a model. It will look like this:
```javascript
var UserModel = new Modelize('User', function() {
this.adapter('memory');
this.property('username', 'string', { required: true });
this.property('password', 'string', { required: true });
this.property('firstName', 'string', { defaultValue: 'John' });
this.property('lastName', 'string', { defaultValue: 'Doe' });
});
```
The following data types are currently supported:
- string
- number
- array
- object
## Creating instances ##
Now you can create instances of your new fancy User model. It is easy too:
```javascript
var user = UserModel.create({
username: 'jdoe',
password: 'fancymodels',
lastName: 'Smith'
});
```
## Getting and setting properties
Just use the following syntax:
```javascript
// Getting properties
console.log(user.username());
console.log(user.password());
// Setting properties
user.password('modelize');
```
If you try to get a property which was not initialized yet, it will return the default value or undefined if there is none.
## Saving & Deleting of model instances ##
**Remember:** You must initialize/set all required properties before saving the model. Otherwise Modelize will throw an error.
```javascript
user.save(); // Saves the model instance into the store
user.password('nodejs');
user.save(); // Updates the model instance in the store
user.remove(); // Removes the model instance from the store
```
## Querying ##
Modelize offers a simple API for finding and sorting existing items/instances. Please remember, that an instance can only be found, if ```instance.save()``` was called.
The API is (as you might expect for a NodeJS library) asynchronous and the methods for querying are static methods on each model constructor.
### Shared instances ###
Instances are always shared to save memory usage and keep the usage simple. This means:
```javascript
var user1 = UserModel.create({
lastName: 'Doe'
});
var user2 = UserModel.create({
lastName: 'Doe'
});
UserModel.find({lastName: 'Doe'}, function(err, data) {
// data[0] is the same instance as user1
// data[1] is the same instance as user2
user1.lastName('Smith');
console.log(user1.lastName() == data[0].lastName()) // Is true
});
```
### Finding a single item ###
Use the ```findOne``` method to find a single item. You can specify a set of query parameters in the form of an object-literal. In the case of multiple results, it will only return the first one. If no result can be found, the return value is ```undefined```.
```javascript
UserModel.findOne({username: 'jdoe'}, function(err, user) {
if(err) throw err;
if(user === undefined) throw new Error('User not found!');
console.log(user);
});
```
### Collection of items ###
Use the ```find``` method to find lots of items. Pass it a set of query parameters in the form of an object-literal, where each key is a field to compare and the value is a simple value for comparison. (equal to)
```javascript
UserModel.find({lastName: 'Smith'}, function(err, data) {
if(err) throw err;
// Data is now array filled with all results found
});
```
If you want to compare an object, you can also give a set of query parameters like this: ```{stats: {experience: 37, age: 19}}```
- - -
Modelize Javascript ORM - © 2012-2013 P. Mathis (pmathis@snapserv.net)