Nodejs : Wordbucket GitHub Link
Commit 9 Nodejs Wordbucket : create sqlite3 database word and explanation table
Commits on May 1, 2018
config/config.json
- แก้ config เป็นใช้ sqlite แล้ว undo migrate และ migrate ใหม่
migrations/20180507184802-create-word.js
- สร้าง migration file ของตาราง Word โดยมี scema เหมือน project django ของเรา แต่ sequelize จะมี id เป็น primary key อัตโนมัติและ createdAt, updatedAt เวลาสร้างและเวลาอัพเดทอัตโนมัติ
| @@ -0,0 +1,28 @@ | ||
| +'use strict'; | ||
| +module.exports = { | ||
| + up: (queryInterface, Sequelize) => { | ||
| + return queryInterface.createTable('Words', { | ||
| + id: { | ||
| + allowNull: false, | ||
| + autoIncrement: true, | ||
| + primaryKey: true, | ||
| + type: Sequelize.INTEGER | ||
| + }, | ||
| + word: { | ||
| + allowNull: false, | ||
| + type: Sequelize.STRING | ||
| + }, | ||
| + createdAt: { | ||
| + allowNull: false, | ||
| + type: Sequelize.DATE | ||
| + }, | ||
| + updatedAt: { | ||
| + allowNull: false, | ||
| + type: Sequelize.DATE | ||
| + } | ||
| + }); | ||
| + }, | ||
| + down: (queryInterface, Sequelize) => { | ||
| + return queryInterface.dropTable('Words'); | ||
| + } | ||
| +}; |
migrations/20180507184836-create-explanation.js
- สร้าง migration file ของตาราง Explanation โดยมี scema เหมือน project django ของเรา แต่ sequelize จะมี id เป็น primary key อัตโนมัติและ createdAt, updatedAt เวลาสร้างและเวลาอัพเดทอัตโนมัติ และคิดว่าจะใช้ word เป็น foreinkey references: { model: 'Word', key: 'word' } (แต่เป็นการกำหนดที่ไม่ถูกต้อง เพิ่งทราบใน commit หลังจากนี้ ซึ่งสามารถ migrate ผ่านแต่ entity ไม่มี relation เชื่อมต่อกันพอไปทดสอบใน https://sqliteonline.com/)
| @@ -0,0 +1,38 @@ | ||
| +'use strict'; | ||
| +module.exports = { | ||
| + up: (queryInterface, Sequelize) => { | ||
| + return queryInterface.createTable('Explanations', { | ||
| + id: { | ||
| + allowNull: false, | ||
| + autoIncrement: true, | ||
| + primaryKey: true, | ||
| + type: Sequelize.INTEGER | ||
| + }, | ||
| + word: { | ||
| + type: Sequelize.STRING, | ||
| + references: { model: 'Word', key: 'word' } | ||
| + }, | ||
| + explanation_text: { | ||
| + allowNull: false, | ||
| + type: Sequelize.STRING | ||
| + }, | ||
| + like: { | ||
| + type: Sequelize.INTEGER | ||
| + }, | ||
| + dislike: { | ||
| + type: Sequelize.INTEGER | ||
| + }, | ||
| + createdAt: { | ||
| + allowNull: false, | ||
| + type: Sequelize.DATE | ||
| + }, | ||
| + updatedAt: { | ||
| + allowNull: false, | ||
| + type: Sequelize.DATE | ||
| + } | ||
| + }); | ||
| + }, | ||
| + down: (queryInterface, Sequelize) => { | ||
| + return queryInterface.dropTable('Explanations'); | ||
| + } | ||
| +}; |
models/explanation.js
- model ไว้ export ค่าต่างๆมาใช้ ตามที่เรากำหนดโดยใน ตาราง Explanation ใช้ในตอนนี้ใช้ word, explanation_text, like, dislike ได้
| @@ -0,0 +1,14 @@ | ||
| +'use strict'; | ||
| +module.exports = (sequelize, DataTypes) => { | ||
| + var Explanation = sequelize.define('Explanation', { | ||
| + word: DataTypes.STRING, | ||
| + explanation_text: DataTypes.STRING, | ||
| + like: DataTypes.INTEGER, | ||
| + dislike: DataTypes.INTEGER | ||
| + }, {}); | ||
| + Explanation.associate = function(models) { | ||
| + // associations can be defined here | ||
| + Explanation.belongsTo(Word, {foreignKey: 'word', targetKey: 'word'}); | ||
| + }; | ||
| + return Explanation; | ||
| +}; |
models/word.js
- model ไว้ export ค่าต่างๆมาใช้ ตามที่เรากำหนดโดยใน ตาราง Word ใช้ในตอนนี้ใช้ word ได้
| @@ -0,0 +1,11 @@ | ||
| +'use strict'; | ||
| +module.exports = (sequelize, DataTypes) => { | ||
| + var Word = sequelize.define('Word', { | ||
| + word: DataTypes.STRING | ||
| + }, {}); | ||
| + Word.associate = function(models) { | ||
| + // associations can be defined here | ||
| + Word.hasMany(Explanation, {foreignKey: 'word', sourceKey: 'word'}); | ||
| + }; | ||
| + return Word; | ||
| +}; |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น