最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nodejs + sequelize 實現(xiàn)增刪改查操作

 更新時間:2020年11月07日 10:51:29   作者:sorrycx  
這篇文章主要介紹了Nodejs + sequelize 實現(xiàn)增刪改查操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. 下載資源庫

npm install sequelize --save

npm install mysql2 --save // npm install mysql 提示不完整

2. 創(chuàng)建數(shù)據(jù)庫配置文件 db.js,配置數(shù)據(jù)庫

var Sequelize = require('sequelize'); 
module.exports = new Sequelize('blog', 'root', '123456', {
  host: 'localhost', // 數(shù)據(jù)庫地址
  dialect: 'mysql', // 指定連接的數(shù)據(jù)庫類型
  operatorsAliases: false,
  pool: {
    max: 5, // 連接池中最大連接數(shù)量
    min: 0, // 連接池中最小連接數(shù)量
    idle: 10000 // 如果一個線程 10 秒鐘內(nèi)沒有被使用過的話,那么就釋放線程
  }
});

3. 創(chuàng)建一個model 文件 user.js

var Sequelize = require('sequelize');
var sequelize = require('./db');

// 創(chuàng)建 model
var User = sequelize.define('user', {
  id : {type : Sequelize.INTEGER, autoIncrement : true, primaryKey : true, unique : true},
  userName: {
    type: Sequelize.STRING, // 指定值的類型
    field: 'user_name' // 指定存儲在表中的鍵名稱
  },
  // 沒有指定 field,表中鍵名稱則與對象鍵名相同,為 email
  email: {
    type: Sequelize.STRING
  }
}, {
  // 如果為 true 則表的名稱和 model 相同,即 user
  // 為 false MySQL創(chuàng)建的表名稱會是復(fù)數(shù) users
  // 如果指定的表名稱本就是復(fù)數(shù)形式則不變
  freezeTableName: true
});

/*User.sync({force:false}).then(function(){
  console.log("success to start");
}).catch(function(err){
  console.log("failed to start ")
})*/
// 創(chuàng)建表
// User.sync() 會創(chuàng)建表并且返回一個Promise對象
// 如果 force = true 則會把存在的表(如果users表已存在)先銷毀再創(chuàng)建表
// 默認情況下 forse = false
//var user = User.sync({ force: false });

// 添加新用戶
exports.addUser = function(userName, email) {
  // 向 user 表中插入數(shù)據(jù)
  return User.create({
    userName: userName,
    email: email
  }).then(function(result){
    console.log("插入操作成功"+result);
  }).catch(function(err){
    console.log("添加數(shù)據(jù)發(fā)生錯誤:"+err)
  });
};

exports.findByName = function(userName) {
  return User.findOne({where: {user_name:userName
    }}).then(function(result){
       console.log("成功:" + result.id);
    }).catch(function(err){
      console.log("發(fā)生錯誤:" + err);
    });
};

// 通過用戶名查找用戶
 
exports.update = function(id){
 return User.findOne({where: {id:id
    }}).then(function(user){
      
      return user.update({
          email:'jack3@qq.com'
        }).then(function(result){
          console.log("update success: "+result);
        }).catch(function(err){
          console.log("更新操作出錯:"+err);
        }); 

    });
 
};
exports.destroy = function(id){
  return User.destroy({where:{id:id}}).then(function(result){
    console.log("delete success");
  }).catch(function(err){
    console.log("delete data err: "+err);
  })
}

4. 測試文件

var user = require('./user');
//查詢操作
//user.findByName("jack");
// 添加用戶
//user.addUser('jack2', 'jack@163.com');
// 更新
//user.update(1001);
//刪除
//user.destroy(1001);

補充知識:nodejs Sequelize 簡單查詢語句和 mysql常用的幾個查詢命令

我是前端,但總有需求讓做后端的活,所以順帶著熟悉了下簡單的查詢語句

貼出來,如果有需要可以參考下,備注很詳細,就不多解釋了

廢話不多說貼代碼:

#去除unionid 重復(fù)的搜索結(jié)果
#query_resultsign 表名
select *, count(unionid) from query_resultsign where issign='false' group by unionid ;
 
#去除unionid 重復(fù)的搜索結(jié)果
#query_resultsign 表名
select *, count(unionid) from query_resultsign where issign='true' group by unionid ;
 
#求未簽約用戶的平均訪問頻率(即為求搜索結(jié)果列的平均值issign='false' 未簽約)
#cuid 是unid的別名
#query_resultsign 表名
select AVG(bs.cuid) as unUserAvg FROM (select *, count(unionid) cuid from query_resultsign where issign='false' group by unionid ) as bs;
 
#求平均值
#(即為求搜索結(jié)果issign='true' count的平均值)
#bs為子查詢的別名,不帶別名會報錯
#query_resultsign 表名
select AVG(bs.cuid) userAvg FROM (select *, count(unionid) cuid from query_resultsign where issign='true' group by unionid ) as bs;
 
#增加id 列 int 
#query_resultsign
ALTER TABLE query_resultsign add id int;
 
#使表 query_resultsign (上一步)增加的列變?yōu)樽栽隽?
alter table query_resultsign change id id int NOT NULL AUTO_INCREMENT primary key;
 
 #獲取兩列數(shù)據(jù)中有相同數(shù)據(jù)的列
 #query_resultsign 表名
select  p1.*  from  query_resultsign  p1,query_resultsign  p2  where  p1.id<>p2.id
 and  p1.x  =  p2.x 
 and  p1.y  =  p2.y ;
 
 #查找表query_resultsign unionid 相同的用戶
 select  p1.*  from  query_resultsign  p1,query_resultsign  p2  where  p1.id<>p2.id
 and  p1.unionid  =  p2.unionid ;

sequelize 的調(diào)用sql語句的方法順帶提一下,網(wǎng)上大多教程都是用model 查詢的,每次都要建立model。有點麻煩 。配置的教程請參看配置教程。

sequelize調(diào)用sql主要用query(sql,{})方法:

var Sequelize = require('sequelize');//引入sequelize 
var sequelize = require('./../../database/dataconfig'); //引入連接配置文件
 
//查找簽約用戶
exports.selectHeatData = function (req, res) {
  return sequelize.query("select * from `query_resultSign` where issign ='true'", { type: sequelize.QueryTypes.SELECT }).then(data => {
    // console.log('******', data);
    res.send(data);
  }).catch(err => {
    console.log('錯誤', err)
  })
}
//其他方法就是換了下sql語句

主要知識點就是query方法內(nèi)傳入查詢出的結(jié)果的類型 { type: sequelize.QueryTypes.SELECT } 這樣就不用手動轉(zhuǎn)換成json對象了。

附帶配置文件代碼

dataconfig.js

var Sequelize = require('sequelize'); 
module.exports = new Sequelize('pingan_scame', 'root', '123456', {
  host: 'localhost', // 數(shù)據(jù)庫地址
  dialect: 'mysql', // 指定連接的數(shù)據(jù)庫類型
  operatorsAliases: false,
  pool: {
    max: 5, // 連接池中最大連接數(shù)量
    min: 0, // 連接池中最小連接數(shù)量
    idle: 10000 // 如果一個線程 10 秒鐘內(nèi)沒有被使用過的話,那么就釋放線程
  }
 
});

以上這篇Nodejs + sequelize 實現(xiàn)增刪改查操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • node.js如何根據(jù)URL返回指定的圖片詳解

    node.js如何根據(jù)URL返回指定的圖片詳解

    這篇文章主要介紹了NODE.JS如何根據(jù)URL返回指定的圖片詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-10-10
  • Node.js?中的?RSA?加密、解密、簽名與驗證

    Node.js?中的?RSA?加密、解密、簽名與驗證

    RSA加密算法因其非對稱的特性,廣泛應(yīng)用于數(shù)據(jù)的加密、解密、簽名和驗證等安全領(lǐng)域,本文主要介紹了Node.js?中的?RSA?加密、解密、簽名與驗證,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • node.js中的http.response.write方法使用說明

    node.js中的http.response.write方法使用說明

    這篇文章主要介紹了node.js中的http.response.write方法使用說明,本文介紹了http.response.write的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 淺談Node.js中的定時器

    淺談Node.js中的定時器

    本文給大家分享的是Node.js中的定時器的相關(guān)資料,十分的全面細致,有需要的小伙伴可以參考下。
    2015-06-06
  • Node快速切換版本、版本回退(降級)、版本更新(升級)

    Node快速切換版本、版本回退(降級)、版本更新(升級)

    這篇文章主要介紹了Node快速切換版本、版本回退(降級)、版本更新(升級),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-01-01
  • node刪除、復(fù)制文件或文件夾示例代碼

    node刪除、復(fù)制文件或文件夾示例代碼

    這篇文章主要給大家介紹了關(guān)于node刪除、復(fù)制文件或文件夾的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用node具有一定的參考學(xué)習價值,需要的朋友們下面來一起學(xué)習學(xué)習吧
    2019-08-08
  • node.js實現(xiàn)博客小爬蟲的實例代碼

    node.js實現(xiàn)博客小爬蟲的實例代碼

    這篇文章通過實例代碼來給大家介紹如何利用node.js實現(xiàn)博客小爬蟲,有需要的朋友們可以直接運用文中給出的實例代碼來進行實踐學(xué)習,感興趣的朋友們下面來一起看看吧。
    2016-10-10
  • nodejs對文件中的圖片進行歸類操作示例

    nodejs對文件中的圖片進行歸類操作示例

    這篇文章主要為大家介紹了nodejs對文件中的圖片進行歸類的實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Mongoose經(jīng)常返回e11000 error的原因分析

    Mongoose經(jīng)常返回e11000 error的原因分析

    這篇文章主要給大家分析了Mongoose經(jīng)常返回e11000 error的原因,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友可以們下面來一起看看吧。
    2017-03-03
  • Nodejs異步流程框架async的方法

    Nodejs異步流程框架async的方法

    這篇文章主要介紹了Nodejs異步流程框架async的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06

最新評論

姚安县| 孝感市| 台东市| 凤台县| 大竹县| 修武县| 武宣县| 永吉县| 永仁县| 盘山县| 红原县| 涞水县| 唐河县| 阿拉善右旗| 长治市| 平潭县| 泾川县| 南城县| 昭通市| 偏关县| 和林格尔县| 乌兰县| 苏尼特右旗| 和平县| 桐梓县| 始兴县| 郴州市| 津市市| 新干县| 金川县| 株洲市| 荆州市| 黑河市| 石家庄市| 正定县| 葵青区| 文山县| 普宁市| 庆安县| 大同县| 张家口市|