您好,登錄后才能下訂單哦!
在Nodejs中利用 sequelize 實現增刪改查的方法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1. 下載資源庫
npm install sequelize --save
npm install mysql2 --save // npm install mysql 提示不完整
2. 創建數據庫配置文件 db.js,配置數據庫
var Sequelize = require('sequelize'); module.exports = new Sequelize('blog', 'root', '123456', { host: 'localhost', // 數據庫地址 dialect: 'mysql', // 指定連接的數據庫類型 operatorsAliases: false, pool: { max: 5, // 連接池中最大連接數量 min: 0, // 連接池中最小連接數量 idle: 10000 // 如果一個線程 10 秒鐘內沒有被使用過的話,那么就釋放線程 } });
3. 創建一個model 文件 user.js
var Sequelize = require('sequelize'); var sequelize = require('./db'); // 創建 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創建的表名稱會是復數 users // 如果指定的表名稱本就是復數形式則不變 freezeTableName: true }); /*User.sync({force:false}).then(function(){ console.log("success to start"); }).catch(function(err){ console.log("failed to start ") })*/ // 創建表 // User.sync() 會創建表并且返回一個Promise對象 // 如果 force = true 則會把存在的表(如果users表已存在)先銷毀再創建表 // 默認情況下 forse = false //var user = User.sync({ force: false }); // 添加新用戶 exports.addUser = function(userName, email) { // 向 user 表中插入數據 return User.create({ userName: userName, email: email }).then(function(result){ console.log("插入操作成功"+result); }).catch(function(err){ console.log("添加數據發生錯誤:"+err) }); }; exports.findByName = function(userName) { return User.findOne({where: {user_name:userName }}).then(function(result){ console.log("成功:" + result.id); }).catch(function(err){ console.log("發生錯誤:" + 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 重復的搜索結果 #query_resultsign 表名 select *, count(unionid) from query_resultsign where issign='false' group by unionid ; #去除unionid 重復的搜索結果 #query_resultsign 表名 select *, count(unionid) from query_resultsign where issign='true' group by unionid ; #求未簽約用戶的平均訪問頻率(即為求搜索結果列的平均值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; #求平均值 #(即為求搜索結果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 (上一步)增加的列變為自增列 alter table query_resultsign change id id int NOT NULL AUTO_INCREMENT primary key; #獲取兩列數據中有相同數據的列 #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 的調用sql語句的方法順帶提一下,網上大多教程都是用model 查詢的,每次都要建立model。有點麻煩 。配置的教程請參看配置教程。
sequelize調用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方法內傳入查詢出的結果的類型 { type: sequelize.QueryTypes.SELECT } 這樣就不用手動轉換成json對象了。
附帶配置文件代碼
dataconfig.js
var Sequelize = require('sequelize'); module.exports = new Sequelize('pingan_scame', 'root', '123456', { host: 'localhost', // 數據庫地址 dialect: 'mysql', // 指定連接的數據庫類型 operatorsAliases: false, pool: { max: 5, // 連接池中最大連接數量 min: 0, // 連接池中最小連接數量 idle: 10000 // 如果一個線程 10 秒鐘內沒有被使用過的話,那么就釋放線程 } });
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。