relation
v0.1.0
Published
[](https://circleci.com/gh/navjobs/relation) [ {
return 'dashboard_chats'
}
*/
}
###Using the Model
As long as the plural version of the model is available in the database (you can overwrite this), you can query the database.
import Chat from './chat'
async function getChats {
let chats = await Chat.all()
console.log(chats)
}####Supported methods
.all()returns everything in the table.where({ fieldName: 'value' })returns any matching results.create({ field: 'value'})create a new row.select('column', 'column2')contrain rows to select.first()returns first results.limit(5)limits the query
###Query Building
Chat.select('messages', 'id').where({ messages: 'blah' }).get()
Chat.where({ messages: 'blah' }).get()
Chat.select('messages').first()
Chat.where({ messages: 'blah' }).limit(2).get()
###Relationships
This is a huge WIP, feel free to contribute :)
Supported:
- One To One
- One To Many
Todo:
- One To Many (Inverse)
- Many To Many
- Has Many Through
- Polymorphic Relations
- Many To Many Polymorphic Relations
####One to One Example
import { Model } from 'relation'
export default class User extends Model {
}
export default class Chat extends Model {
user() {
return this.hasOne(User)
}
}
let chat = await Chat.first()
//any relationship will return a promise with the result
let user = await chat.user
expect(user.name).to.be.equal('Bob')
####One to Many Example
import { Model } from 'relation'
export default class User extends Model {
chats() {
return this.hasMany(Chat)
}
}
export default class Chat extends Model {
}
let user = await User.first()
//has many results return a query builder instance
let chats = await user.chats.first()
###Migrations
Will go over this soon...
###CLI
If you install relation globally (npm install relation -g) you can access the CLI methods to help create migrations, models, etc.
####Migrations
relation make:migration User -m -m will create a model as well
This will create a migration file that will allow you to build out tables.
####Models
relation make:model User
Creates a file in your current directory /models/user.js with a default model
