0.0.1 • Published 9 years ago

fnorm v0.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
9 years ago

fnORM - a functional ORM

Let's face it: Node's ORMs are crap. Mostly at least. But JavaScript is an awesome language. So why. Because we did it wrong. To much class-ish stuff like backbone.

We want to fix this. This is the first idea for the API:

Initialisation

var fnORM = require('fnorm');

var store = fnORM({
  //db config goes here
});

Creating Models/Collections/Whatever-you-call-them

... , we call it store.

var userStore = store('user') // 'user' is the tablename

Fetch array of things

userStore.where(where).map(fn).filter(fn).then(function(users) {
  // Array of POJOs containing user data
});

We will support most of the lodash collections stuff. But lazy!

Fetch one thing

userStore.get(id).then(function(user) {
  // POJO containing user data
});

Create one thing

userStore.save(data).then(function(user) {
  // POJO containing user data
});

Update one thing

userStore.save(id, data).then(function(user) {
  // POJO containing user data
});

Relations

postStore = store('post', {
  relations: {
    user: function(post) {
      return userStore.get(post.userId);
    },
    comments: function(post) {
      return commentStore.where({
        postId: post.id
      });
    }
  }
})

postStore.get(123).with('user', 'comments').then(function(post) {
  // post = {
  //   titel: 'hurray'
  //   user: {
  //     name: 'Mister T'
  //   },
  //   comments: [
  //     { text: 'awesome' },
  //     { text: '+1' }
  //   ]
  // };
});

Hope you like it.

If you have any ideas, feel free to create a PR/Issue.