0.2.6 • Published 5 years ago
@nvitaterna/plugin-sails v0.2.6
Vuex ORM Plugin: Sails
Forked from @vuex-orm/plugin-axios
Installation
import VuexORM from '@vuex-orm/core'
import VuexORMSails from '@nvitaterna/plugin-sails'
import database from './database'
..
VuexORM.use(VuexORMSails, {
database,
http: {
baseURL: 'https://websocket.url',
url: '/',
headers: {}
}
})
..
export default () => new Vuex.Store({
namespaced: true,
plugins: [VuexORM.install(database)]
})
Sails Request Config
export const SailsIOConfig = {
/**
* Default create new io instance, provide
* option to pass an existing instance through.
*/
io: undefined,
/**
* Default Base URL
*/
baseURL: 'http://localhost:1337',
/**
* Default Request URL
*/
url: '/',
/**
* Default Headers
*/
headers: {},
};
Model Methods
import User from '../models/User';
/**
* @uri `/users`
*/
User.$fetch();
/**
* @uri `/users/:id`
*/
User.$get({
params: {
id: 1
}
});
/**
* @uri `/users`
*/
User.$create({
data: {}
});
/**
* @uri `/users/:id`
*/
User.$update({
params: {
id: 1
},
data: {}
});
/**
* @uri `/users/:id`
*/
User.$delete({
params: {
id: 1
}
});
Model Config
Default Model
import { Model } from '@vuex-orm/core'
export default class Post extends Model {
static entity = 'posts'
static fields () {
return {
id: this.increment(),
title: this.string('')
}
}
}
Edited Model
import { Model } from '@vuex-orm/core'
export default class Post extends Model {
static entity = 'posts'
static fields () {
return {
id: this.increment(),
title: this.string('')
}
}
static methodConf = {
sails: {
url: '/post'
},
methods: {
$fetch: {
name: 'fetch',
sails: {
url: '',
method: 'get',
},
},
$get: {
name: 'get',
sails: {
url: '/:id',
method: 'get',
},
},
$create: {
name: 'create',
sails: {
url: '',
method: 'post',
},
},
$update: {
name: 'update',
sails: {
url: '/:id',
method: 'put',
},
},
$delete: {
name: 'delete',
sails: {
url: '/:id',
method: 'delete',
},
},
},
}
}