node連接數(shù)據(jù)庫(kù)學(xué)習(xí)筆記

一、mysql庫(kù)

文檔:https://github.com/mysqljs/mysql

mysql有三種創(chuàng)建連接方式

1.createConnection

使用時(shí)需要對(duì)連接的創(chuàng)建、斷開(kāi)進(jìn)行管理

2.createPool

創(chuàng)建資源池,使用時(shí)不需要對(duì)連接的創(chuàng)建、斷開(kāi)進(jìn)行管理,每次使用完調(diào)用一次release進(jìn)行釋放連接到資源池,至于連接是否斷開(kāi)交給資源池去管理。每次建立連接時(shí)非常消耗資源的,影響性能,因此對(duì)連接創(chuàng)建合理的管理,有利于提高性能。

3.createPoolCluster

創(chuàng)建連接池集群,允許與多個(gè)host連接

二、sequelize庫(kù)

中文文檔:https://github.com/demopark/sequelize-docs-Zh-CN

此庫(kù)依賴mysql2

與mysql庫(kù)相比,不需要寫(xiě)sql語(yǔ)句,增刪查改都封裝成對(duì)應(yīng)的方法。
mysql庫(kù)入門(mén)比較簡(jiǎn)單,有利于學(xué)習(xí)sql語(yǔ)句
sequelize封裝了一些簡(jiǎn)單sql語(yǔ)句,掌握封裝的方法及對(duì)應(yīng)的參數(shù)即可,但學(xué)習(xí)成本稍微高一些,需要?jiǎng)?chuàng)建模式,模式需要與數(shù)據(jù)庫(kù)中的表對(duì)應(yīng)起來(lái)。在項(xiàng)目實(shí)際開(kāi)發(fā)過(guò)程中,使用sequelize開(kāi)發(fā)效率更高,代碼可以更加簡(jiǎn)短。也有query方法,支持使用sql語(yǔ)句。

sequelize提供了一個(gè)方法sequelize.sync({ force: true });強(qiáng)制數(shù)據(jù)庫(kù)中的表與模式定義的表進(jìn)行同步,如果數(shù)據(jù)庫(kù)中存在與模式定義同名的表,此表會(huì)被刪除,重新定義。如果數(shù)據(jù)庫(kù)中存在模式未定義的表,不會(huì)對(duì)其進(jìn)行操作。
也可以對(duì)單個(gè)模式設(shè)置強(qiáng)制同步
如:

// 注意:如果表已經(jīng)存在,使用`force:true`將刪除該表
User.sync({ force: true }).then(() => {
  // 現(xiàn)在數(shù)據(jù)庫(kù)中的 `users` 表對(duì)應(yīng)于模型定義
  return User.create({
    firstName: 'John',
    lastName: 'Hancock'
  });
});

強(qiáng)制同步也有風(fēng)險(xiǎn)點(diǎn):
1.適合在項(xiàng)目初始化,需要?jiǎng)?chuàng)建數(shù)據(jù)表的時(shí)候使用
2.如果數(shù)據(jù)庫(kù)中已有部分?jǐn)?shù)據(jù),當(dāng)服務(wù)重啟時(shí),數(shù)據(jù)庫(kù)中模式定義的表會(huì)被刪除,數(shù)據(jù)會(huì)丟失,因此不適合在非初始化時(shí)使用,因此在使用時(shí)需要判斷是否時(shí)初始化的情況

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容