分享 推播通知
目前身份: 訪客

所謂的定義方式,就是我要怎麼去用Model操作資料表。Sequelize就是讓我們去操作資料庫用的,它裡面有Model,Model就是讓我們去操作資料表的。

 

那麼要去操作資料表之前,就要先定義,定義好之後,才能操作你的資料表。

 

定義的方式有2種:

1、sequelize.define

2、使用 Extend Model,再用init

 

使用 sequelize.define

 

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

const User = sequelize.define('User', {
  // Model 的屬性都是定義在這裡
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull 如果沒有填寫,預設就是允許它null
  }
}, {
  // 其它的 model 選項填寫在這裡
});

// `sequelize.define` 也可以回傳定義的 model
console.log(User === sequelize.models.User); // true

 

 

使用 Extend Model,再用init 

 

const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory');

class User extends Model {}

User.init({
  // Model 的屬性都是定義在這裡
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull 如果沒有填寫,預設就是允許它null
  }
}, {
  // 其它的 model 選項填寫在這裡
  sequelize, // We need to pass the connection instance
  modelName: 'User' // 我們需要設一個 model 名稱給它
});

// 定義好後 User就跟 sequelize.models.User 是一樣的
console.log(User === sequelize.models.User); // true

 

這2個方法都是一樣的。

 

這時候要問一個問題,資料表的名稱是寫在哪裡?這個定義Model的名稱是叫 User,那我的資料表名稱是叫 users,沒看到定義哪裡有寫users阿?

 

這也是我剛才開接觸的時候,踩了很大的坑,搞不懂為什麼,將在下一節解釋。

 

 

程式設計 發表在 留言 (0) 人氣 (482)
第02章 Model基礎
分享給朋友
網址

想對外分享這則貼文嗎?運用網址更方便呦~

載入中...