国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

learning sequelize

Lionad-Morotar / 2926人閱讀

摘要:入門在使用來關系型操作數據庫時,為了方便,通常都會選擇一個合適的框架。類似這樣加,會先刪掉表后再建表。通過模型的類方法可以獲取模型對象比如等。增加小明技術部修改小白白更新成功刪除刪除成功查詢

sequelize入門

在使用NodeJS來關系型操作數據庫時,為了方便,通常都會選擇一個合適的ORM(Object Relationship Model)框架。畢竟直接操作SQL比較繁瑣,通過ORM框架,我們可以使用面向對象的方式來操作表。

安裝
$ npm install --save co
$ npm install --save sequelize
$ npm install --save mysql
代碼模板
var Sequelize = require("sequelize");
var co = require("co");

co(function* () {
    // code here
}).catch(function(e) {
    console.log(e);
});
建立數據庫連接
var sequelize = new Sequelize(
    "db_entry", // 數據庫名
    "root",   // 用戶名
    "",   // 用戶密碼
    {
        "dialect": "mysql",  // 數據庫使用mysql
        "host": "localhost", // 數據庫服務器ip
        "port": 3306,        // 數據庫服務器端口
        "define": {
            // 字段以下劃線(_)來分割(默認是駝峰命名風格)
            "underscored": true
        }
    }
);
建立表ORM
# 用戶信息表
create TABLE xxts_users(
id INT(11) NOT NULL AUTO_INCREMENT,
username varchar(30) NOT NULL,
password VARCHAR(30) NOT NULL,
sex INT(2) NOT NULL DEFAULT 1,
age VARCHAR(10) NULL,
photo VARCHAR(30) NULL,
realname VARCHAR(30) NULL,
created_at DATETIME NOT NULL, 
updated_at DATETIME NOT NULL,
PRIMARY KEY (id)
);
var User = sequelize.define(
    // 這個值還會作為訪問模型相關的模型時的屬性名,所以建議用小寫形式
    "xxts_users",
    // 字段定義(主鍵、created_at、updated_at默認包含,不用特殊定義)
    {
        "username": {
            "type": Sequelize.STRING(30),
            "allowNull": false
        },
        "password": {
            "type": Sequelize.STRING(30),
            "allowNull": false
        },
        "sex": {
            "type": Sequelize.INTEGER(2),
            "allowNull": false
        },
        "age": {
            "type": Sequelize.STRING(10),
            "allowNull": true
        },
        "photo": {
            "type": Sequelize.STRING(30),
            "allowNull": true
        },
        "realname": {
            "type": Sequelize.STRING(30),
            "allowNull": true
        }
    },
    {
        // 自定義表名
        "freezeTableName": true,
        "tableName": "xxts_users",

        // 是否需要增加createdAt、updatedAt、deletedAt字段
        "timestamps": true,

        // 不需要createdAt字段
        // "createdAt": false,
        // 將updatedAt字段改個名
        //"updatedAt": "utime"
        // 將deletedAt字段改名
        // 同時需要設置paranoid為true(此種模式下,刪除數據時不會進行物理刪除,而是設置deletedAt為當前時間
        // "deletedAt": "dtime",
        // "paranoid": true
    }
);

說明:

建表SQL會自動執行的意思是你主動調用sync的時候。類似這樣:User.sync({force: true});(加force:true,會先刪掉表后再建表)。我們也可以先定義好表結構,再來定義Sequelize模型,這時可以不用sync。兩者在定義階段沒有什么關系,直到我們真正開始操作模型時,才會觸及到表的操作,但是我們當然還是要盡量保證模型和表的同步(可以借助一些migration工具)。

增刪改查

通過Sequelize獲取的模型對象都是一個DAO(Data Access Object)對象,這些對象會擁有許多操作數據庫表的實例對象方法(比如:save、update、destroy等),需要獲取“干凈”的JSON對象可以調用get({"plain": true})。

通過模型的類方法可以獲取模型對象(比如:findById、findAll等)。

// 增加
function user_add() {
  co(function*() {
    var user = yield User.create({
      username: "小明",
      password: "技術部",
      sex: 2,
      age: 32,
      photo: "photo.jpg",
      realname: "admin"
    });
    console.log(user.get({ plain: true }));
  }).catch(function(e) {
    console.log(e);
  });
}

// 修改
function user_update(){
    co(function*() {
        var user = yield User.update({
            username: "小白白"
        },{
            where:{
                id:1
            }
        });
        console.log("更新成功");
    }).catch(function(e) {
        console.log(e);
    });
}

// 刪除
function user_destroy(){
    co(function*() {
        var user = yield User.destroy({
            where:{
                id:1
            }
        });
        console.log("刪除成功");
    }).catch(function(e) {
        console.log(e);
    });
}

// 查詢
function user_query(){
    co(function*() {
        var user = yield User.findAll().spread(function(item, created){
            console.log(item.get({ plain: true }));
        });
    }).catch(function(e) {
        console.log(e);
    });
}

user_query();

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93141.html

相關文章

  • 打造屬于你自己的instagram!全棧項目

    摘要:簡介小伙伴們,如果覺得本文還不錯,記得點個贊或者給個,你們的贊和是我編寫更多更豐富開源項目的動力地址技術棧全家桶前后端分離開發模式,前端項目與后端項目屬于不同的工程前端工程后端工程注此項目純屬個人瞎搞,與無任何關系。 簡介 Hello 小伙伴們,如果覺得本文還不錯,記得點個贊或者給個 star,你們的贊和 star 是我編寫更多更豐富開源項目的動力!GitHub 地址 技術棧 rea...

    levius 評論0 收藏0
  • 打造屬于你自己的instagram!全棧項目

    摘要:簡介小伙伴們,如果覺得本文還不錯,記得點個贊或者給個,你們的贊和是我編寫更多更豐富開源項目的動力地址技術棧全家桶前后端分離開發模式,前端項目與后端項目屬于不同的工程前端工程后端工程注此項目純屬個人瞎搞,與無任何關系。 簡介 Hello 小伙伴們,如果覺得本文還不錯,記得點個贊或者給個 star,你們的贊和 star 是我編寫更多更豐富開源項目的動力!GitHub 地址 技術棧 rea...

    王巖威 評論0 收藏0
  • 打造屬于你自己的instagram! 全棧項目(react + egg.js)

    摘要:簡介小伙伴們,如果覺得本文還不錯,記得點個贊或者給個,你們的贊和是我編寫更多更豐富開源項目的動力地址技術棧全家桶前后端分離開發模式,前端項目與后端項目屬于不同的工程前端工程后端工程注此項目純屬個人瞎搞,與無任何關系。 簡介 Hello 小伙伴們,如果覺得本文還不錯,記得點個贊或者給個 star,你們的贊和 star 是我編寫更多更豐富開源項目的動力!GitHub 地址 技術棧 rea...

    scq000 評論0 收藏0
  • React+Koa全棧開發手記

    摘要:本項目中采用了進行狀態管理,的主要作用是允許狀態在不同分支的組件中進行傳遞,從而避免了使用原始方法如導致的不同分支組件之間數據無法傳遞子組件無法修改父組件狀態等問題。 項目功能 最近在做一個舊書交易網站,本屬于B/S體系結構的課程作業,但由于采用了新的框架所以躍躍欲試想都記錄下來。 實現一個舊書交易網站,基本功能如下: 實現用戶注冊、登錄功能,用戶注冊時需要填寫必要的信息并驗證,如...

    wqj97 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<