VuexとMongooseのベストプラクティス
この文章の下書きは私のGhostブログの楽屋に置いて久しい.Vuexの総括的な文章を書いてから発表したいからだ.このようにしても順序を追って漸進的な感じがします.本明細書は、
Why Mongoose? Nodeでアプリケーションを開発し、データをどのように永続化しますか? MongoDBは良い解決策だと思います.特に敏捷な開発に適しています.
NodeでMongoDBを使用して、MongoDBデータベースをどのように操作しますか? 私がMongoDBに接触し始めたばかりの頃はnode-mongodb-native、MongoDB出品のNodeを使っていました.js駆動.操作データベースはOracle、MySQLのような関係型データベースではなく、基本的なSQL言語でできます.そのコードの量は一塊一塊だ.そこでモンゴスを発見し、コード量がかなり軽減されました.では、それを使います.
実現する必要があること: MongoDBデータベース への接続 schemaを定義しmodel を作成するアプリケーションでmodel を使用 Vuexによるmodel のグローバル化コンポーネント内でgettersによりmodel を取得する
MongoDBデータベースへの接続
一度接続するだけです.
App.vue
config/env_dev.json
schemaを定義しmodelを作成する
vuex/models/user.js
userのmodelをappにエクスポートします.
ここで注意すべき点は、
アプリケーションでのmodelの使用
userのmodelをモジュールに書いた後、アプリケーションでmodelを使うのは簡単です.
userモジュールをインポートするだけです.
これによりmodelを使用してデータベースを操作できます.たとえば、レコードを生成するには、次のようにします.
Vuexによるmodelのグローバル化なぜモデルをグローバル化するのですか? グローバル化モデルとは、vuexによってモデルをstate(状態)として保存することを意味する.アプリケーションではgettersでmodelを取得できます.これにより、userモジュールを複数回インポートし、データベース接続数を増加させる問題を解決できます.
App.vue
vuex/modules/global.js
コンポーネントでgettersでmodelを取得する
CreateUser.vue
これにより、
コードサンプル:vue-demo-collection/vuex-mongose
原文:VuexとMongooseのベストプラクティス
Vue.js
、Vuex
、およびMongoDB
の小さなパートナーを理解するのに適している.Why Mongoose?
実現する必要があること:
MongoDBデータベースへの接続
一度接続するだけです.
App.vue
import store from './vuex/store'
import mongoose from 'mongoose'
import env_conf from './config/env_dev.json' //
mongoose.connect(env_conf.db.uri, env_conf.db.options)
export default {
name: 'App',
store,
data () {
return {
title: 'vuex-mongoose'
}
}
}
config/env_dev.json
{
"name": "development",
"db": {
"uri": "mongodb://localhost:27017/vuex-mongoose",
"options": {
"server": {
"poolSize": 10
}
}
}
}
schemaを定義しmodelを作成する
vuex/models/user.js
userのmodelをappにエクスポートします.
import mongoose from 'mongoose'
const Schema = mongoose.Schema
const userSchema = new Schema({
_id: Number,
username: String,
password: String
})
const User = mongoose.model('user', userSchema)
export default User
ここで注意すべき点は、
const User = mongoose.model('user', userSchema)
という宣言のUserで使用されるデータベースの集合はuserであるが、実際にはデータベースに対応するのはuserの複数、すなわちusersである.アプリケーションでのmodelの使用
userのmodelをモジュールに書いた後、アプリケーションでmodelを使うのは簡単です.
userモジュールをインポートするだけです.
import User from '../models/user'
これによりmodelを使用してデータベースを操作できます.たとえば、レコードを生成するには、次のようにします.
const userInfo = {
username: 'Hello Kitty',
password: '666666'
}
User.create(userInfo, function (err, result) {
if (err) {
console.log(err);
}
})
Vuexによるmodelのグローバル化
App.vue
import store from './vuex/store'
import mongoose from 'mongoose'
import env_conf from './config/env_dev.json'
mongoose.connect(env_conf.db.uri, env_conf.db.options)
import { setModel } from './vuex/actions'
import User from './vuex/models/user' // user model
export default {
name: 'App',
store,
data () {
return {
title: 'vuex-mongoose'
}
},
ready () {
this.setModel(User) // vuex
}
}
vuex/modules/global.js
// vuex/modules/global.js
import {
SET_MODEL
} from '../mutation-types'
// initial state
const state = {
User: ''
}
// mutations
const mutations = {
[SET_MODEL](state, User) {
state.User = User
}
}
export default {
state,
mutations
}
コンポーネントでgettersでmodelを取得する
CreateUser.vue
vuex: {
getters: {
User: ({ global }) => global.User
}
},
methods: {
createUser() {
const userInfo = {
username: 'Hello Kitty',
password: '666666'
}
this.User.create(userInfo, function (err, result) {
if (err) {
console.log(err);
}
})
}
},
ready () {
this.createUser()
}
これにより、
User
を使用してコンポーネント内でさまざまなデータベース操作を行うことができます.コードサンプル:vue-demo-collection/vuex-mongose
原文:VuexとMongooseのベストプラクティス