亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

learning sequelize

Lionad-Morotar / 3015人閱讀

摘要:入門(mén)在使用來(lái)關(guān)系型操作數(shù)據(jù)庫(kù)時(shí),為了方便,通常都會(huì)選擇一個(gè)合適的框架。類(lèi)似這樣加,會(huì)先刪掉表后再建表。通過(guò)模型的類(lèi)方法可以獲取模型對(duì)象比如等。增加小明技術(shù)部修改小白白更新成功刪除刪除成功查詢(xún)

sequelize入門(mén)

在使用NodeJS來(lái)關(guān)系型操作數(shù)據(jù)庫(kù)時(shí),為了方便,通常都會(huì)選擇一個(gè)合適的ORM(Object Relationship Model)框架。畢竟直接操作SQL比較繁瑣,通過(guò)ORM框架,我們可以使用面向?qū)ο蟮姆绞絹?lái)操作表。

安裝
$ 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);
});
建立數(shù)據(jù)庫(kù)連接
var sequelize = new Sequelize(
    "db_entry", // 數(shù)據(jù)庫(kù)名
    "root",   // 用戶(hù)名
    "",   // 用戶(hù)密碼
    {
        "dialect": "mysql",  // 數(shù)據(jù)庫(kù)使用mysql
        "host": "localhost", // 數(shù)據(jù)庫(kù)服務(wù)器ip
        "port": 3306,        // 數(shù)據(jù)庫(kù)服務(wù)器端口
        "define": {
            // 字段以下劃線(xiàn)(_)來(lái)分割(默認(rèn)是駝峰命名風(fēng)格)
            "underscored": true
        }
    }
);
建立表ORM
# 用戶(hù)信息表
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(
    // 這個(gè)值還會(huì)作為訪(fǎng)問(wèn)模型相關(guān)的模型時(shí)的屬性名,所以建議用小寫(xiě)形式
    "xxts_users",
    // 字段定義(主鍵、created_at、updated_at默認(rèn)包含,不用特殊定義)
    {
        "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字段改個(gè)名
        //"updatedAt": "utime"
        // 將deletedAt字段改名
        // 同時(shí)需要設(shè)置paranoid為true(此種模式下,刪除數(shù)據(jù)時(shí)不會(huì)進(jìn)行物理刪除,而是設(shè)置deletedAt為當(dāng)前時(shí)間
        // "deletedAt": "dtime",
        // "paranoid": true
    }
);

說(shuō)明:

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

增刪改查

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

通過(guò)模型的類(lèi)方法可以獲取模型對(duì)象(比如:findById、findAll等)。

// 增加
function user_add() {
  co(function*() {
    var user = yield User.create({
      username: "小明",
      password: "技術(shù)部",
      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);
    });
}

// 查詢(xún)
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();

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93141.html

相關(guān)文章

  • 打造屬于你自己的instagram!全棧項(xiàng)目

    摘要:簡(jiǎn)介小伙伴們,如果覺(jué)得本文還不錯(cuò),記得點(diǎn)個(gè)贊或者給個(gè),你們的贊和是我編寫(xiě)更多更豐富開(kāi)源項(xiàng)目的動(dòng)力地址技術(shù)棧全家桶前后端分離開(kāi)發(fā)模式,前端項(xiàng)目與后端項(xiàng)目屬于不同的工程前端工程后端工程注此項(xiàng)目純屬個(gè)人瞎搞,與無(wú)任何關(guān)系。 簡(jiǎn)介 Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得點(diǎn)個(gè)贊或者給個(gè) star,你們的贊和 star 是我編寫(xiě)更多更豐富開(kāi)源項(xiàng)目的動(dòng)力!GitHub 地址 技術(shù)棧 rea...

    levius 評(píng)論0 收藏0
  • 打造屬于你自己的instagram!全棧項(xiàng)目

    摘要:簡(jiǎn)介小伙伴們,如果覺(jué)得本文還不錯(cuò),記得點(diǎn)個(gè)贊或者給個(gè),你們的贊和是我編寫(xiě)更多更豐富開(kāi)源項(xiàng)目的動(dòng)力地址技術(shù)棧全家桶前后端分離開(kāi)發(fā)模式,前端項(xiàng)目與后端項(xiàng)目屬于不同的工程前端工程后端工程注此項(xiàng)目純屬個(gè)人瞎搞,與無(wú)任何關(guān)系。 簡(jiǎn)介 Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得點(diǎn)個(gè)贊或者給個(gè) star,你們的贊和 star 是我編寫(xiě)更多更豐富開(kāi)源項(xiàng)目的動(dòng)力!GitHub 地址 技術(shù)棧 rea...

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

    摘要:簡(jiǎn)介小伙伴們,如果覺(jué)得本文還不錯(cuò),記得點(diǎn)個(gè)贊或者給個(gè),你們的贊和是我編寫(xiě)更多更豐富開(kāi)源項(xiàng)目的動(dòng)力地址技術(shù)棧全家桶前后端分離開(kāi)發(fā)模式,前端項(xiàng)目與后端項(xiàng)目屬于不同的工程前端工程后端工程注此項(xiàng)目純屬個(gè)人瞎搞,與無(wú)任何關(guān)系。 簡(jiǎn)介 Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得點(diǎn)個(gè)贊或者給個(gè) star,你們的贊和 star 是我編寫(xiě)更多更豐富開(kāi)源項(xiàng)目的動(dòng)力!GitHub 地址 技術(shù)棧 rea...

    scq000 評(píng)論0 收藏0
  • React+Koa全棧開(kāi)發(fā)手記

    摘要:本項(xiàng)目中采用了進(jìn)行狀態(tài)管理,的主要作用是允許狀態(tài)在不同分支的組件中進(jìn)行傳遞,從而避免了使用原始方法如導(dǎo)致的不同分支組件之間數(shù)據(jù)無(wú)法傳遞子組件無(wú)法修改父組件狀態(tài)等問(wèn)題。 項(xiàng)目功能 最近在做一個(gè)舊書(shū)交易網(wǎng)站,本屬于B/S體系結(jié)構(gòu)的課程作業(yè),但由于采用了新的框架所以躍躍欲試想都記錄下來(lái)。 實(shí)現(xiàn)一個(gè)舊書(shū)交易網(wǎng)站,基本功能如下: 實(shí)現(xiàn)用戶(hù)注冊(cè)、登錄功能,用戶(hù)注冊(cè)時(shí)需要填寫(xiě)必要的信息并驗(yàn)證,如...

    wqj97 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<