Я работаю над внедрением Vuex ORM для нормализации моих данных.Я родом из Rails, поэтому работа с ORM представляется мне гораздо более простым способом обработки глубоко вложенных данных.Однако я следовал за документами, когда я проверял Vuex Devtools и открывал объект данных сущностей, они всегда были пустыми.Чего мне не хватает?
_store / index.js
import Vue from 'vue';
import Vuex from 'vuex';
import VuexORM from '@vuex-orm/core';
import database from './database';
Vue.use(Vuex);
export const store = new Vuex.Store({
modules: {
... // existing Vuex modules
},
plugins: [VuexORM.install(database)],
});
_store / database.js
import { Database } from '@vuex-orm/core';
import User from '~/_models/User';
import TodoItem from '~/_models/TodoItem';
import users from './modules/user';
import todoItems from '~/_store/modules/todoItems';
const database = new Database();
database.register(User, users);
database.register(TodoItem, todoItems);
export default database;
_store / modules /
// user.js and todoItems.js
export default {
namespaced: true,
};
_models /
// user.js
import { Model } from '@vuex-orm/core'
import TodoItem from './TodoItem';
export default class User extends Model {
static entity = 'users'
static fields() {
return {
id : this.increment(),
email : this.increment(),
firstName : this.string(''),
lastName : this.string(''),
address1 : this.string(''),
address2 : this.string(''),
city : this.string(''),
state : this.string(''),
country : this.string(''),
avatar_url : this.string(''),
todo_item: this.hasMany(TodoItem, 'user_id'),
}
}
};
// TodoItem.js
import { Model } from '@vuex-orm/core'
import User from './User'
import UpcomingHike from './UpcomingHike';
export default class Todo extends Model {
static entity = 'todos'
static fields() {
return {
id : this.increment(),
title : this.string(''),
completed : this.boolean(false),
user_id : this.number(0),
position : this.number(0),
}
}
}