我正在努力实现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),
}
}
}