您好,登錄后才能下訂單哦!
這篇文章主要介紹Nodejs怎么操作數據庫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
// 導包 const express = require("express"); var mysql = require("mysql"); // 創建一個和數據庫的連接 var connection = mysql.createConnection({ host: "localhost", // 數據庫服務器的地址 user: "root", // 賬號 password: "lijiazhao123", // 密碼 database: "maxiaoyu", // 數據庫名 }); // 打開連接 connection.connect(); let name = "偉健"; let miaoshu = "哈哈哈很開心"; // 執行sql語句 connection.query( `insert into user(username,description) values("${name}","${miaoshu}")`, function (error, results) { if (error == null) { console.log(results); // 返回結果是一個對象 console.log(results.affectedRows); // 受影響的行數,如果大于0,說明新增成功 console.log(results.insertId); // 插入的這條數據的id } } ); // 關閉連接 connection.end();
// 導包 const express = require("express"); var mysql = require("mysql"); // 創建一個和數據庫的連接 var connection = mysql.createConnection({ host: "localhost", // 數據庫服務器的地址 user: "root", // 賬號 password: "lijiazhao123", // 密碼 database: "maxiaoyu", // 數據庫名 }); // 打開連接 connection.connect(); let id = 3; let name = "千里jack"; let miaoshu = "新一代世界首富"; // 執行sql語句 connection.query(`delete from user where id = ${id}`, function ( error, results ) { if (error == null) { console.log(results); // 返回結果是一個對象 console.log(results.affectedRows); // 受影響的行數,如果大于0,說明新增成功 } }); // 關閉連接 connection.end();
// 導包 const express = require("express"); var mysql = require("mysql"); // 創建一個和數據庫的連接 var connection = mysql.createConnection({ host: "localhost", // 數據庫服務器的地址 user: "root", // 賬號 password: "lijiazhao123", // 密碼 database: "maxiaoyu", // 數據庫名 }); // 打開連接 connection.connect(); let id = 3; let name = "千里jack"; let miaoshu = "新一代世界首富"; // 執行sql語句 connection.query( `update user set username="${name}",description="${miaoshu}" where id=${id}`, function (error, results) { if (error == null) { console.log(results); // 返回結果是一個對象 console.log(results.affectedRows); // 受影響的行數,如果大于0,說明新增成功 } } ); // 關閉連接 connection.end();
// 導包 const express = require("express"); var mysql = require("mysql"); // 創建一個和數據庫的連接 var connection = mysql.createConnection({ host: "localhost", // 數據庫服務器的地址 user: "root", // 賬號 password: "lijiazhao123", // 密碼 database: "maxiaoyu", // 數據庫名 }); // 打開連接 // 其實這里這句代碼可以不寫,這個插件內部在你調用query執行sql語句的時候會自動的幫你打開連接 connection.connect(); // 執行sql語句 connection.query("select * from user", function (error, results, fields) { // 錯誤對象,如果沒有錯誤就返回null // console.log(error); // 執行sql語句得到的結果集,有錯的話就是undefined console.log(results); // console.log(results[4].username); // 拿到的是字段的信息 // console.log(fields); }); // 關閉連接 // 其實也可以不寫,也是會自動關閉連接 connection.end();
// 導包 const express = require("express"); const multer = require("multer"); const bodyParser = require("body-parser"); const mysql = require("mysql"); // 創建一個和數據庫的連接 var connection = mysql.createConnection({ host: "localhost", // 數據庫服務器的地址 user: "root", // 賬號 password: "lijiazhao123", // 密碼 database: "maxiaoyu", // 數據庫名 }); // 創建一個uploads文件 var upload = multer({ dest: "uploads/" }); // 創建服務器 const app = express(); // 將uploads文件夾暴露出去,使得此文件夾內的文件可以直接被訪問到 app.use(express.static("uploads")); // 寫路由 // 1. 寫一個新增接口 // 參數:heroName,heroSkill,heroIcon(文件), 使用multer從前端接收 app.post("/hero/add", upload.single("heroIcon"), (req, res) => { let heroIcon = "http://127.0.0.1:4399/" + req.file.filename; let { heroName, heroSkill } = req.body; // 執行sql語句 connection.query( `insert into hero(heroName,heroSkill,heroIcon) values("${heroName}","${heroSkill}","${heroIcon}")`, function (error, results) { if (error == null) { // 如果沒有錯則響應一個code為200的json對象 res.send({ code: 200, msg: "新增成功", }); } else { res.send({ code: 500, msg: "新增失敗", }); } } ); }); // 2. 寫一個查詢所有的英雄接口 // 參數:無 app.get("/hero/all", (req, res) => { // 直接讀取數據庫表中的所有的英雄,返回 // 執行sql語句 connection.query( `select id,heroName,heroSkill,heroIcon from hero where isDelete="false"`, function (error, results) { if (error == null) { // 如果沒有錯則響應一個code為200的json對象 res.send({ code: 200, msg: "查詢成功", data: results, }); } else { res.send({ code: 500, msg: "服務器內部錯誤", }); } } ); }); // 開啟服務器 app.listen(4399, () => { console.log("服務器開啟成功..."); });
我們自己寫的模塊
// 變量 // let foodName = "紅燒肉"; // // 把foodName暴露出去,為了使其可以被其他js文件導入 // module.exports = foodName; // 函數 // function test() { // console.log("我是test函數"); // } // module.exports = test; // 對象 let db = { baseUrl: "http://127.0.0.1:4399", insert() { console.log("我是插入的方法"); }, delete() { console.log("我是刪除的方法"); }, }; module.exports = db;
使用我們自己寫的模塊
// 導包 const path = require("path"); const myMoudle = require(path.join(__dirname, "01-我們自己寫的模塊.js")); // console.log(myMoudle); // myMoudle(); console.log(myMoudle.baseUrl); myMoudle.insert(); myMoudle.delete();
我們自己寫的一個mysql模塊
const mysql = require("mysql"); // 創建一個和數據庫的連接 var connection = mysql.createConnection({ host: "localhost", // 數據庫服務器的地址 user: "root", // 賬號 password: "lijiazhao123", // 密碼 database: "maxiaoyu", // 數據庫名 }); module.exports = { // connection: connection // 簡寫 connection, };
使用我們自己寫的mysql模塊
// 導包 const express = require("express"); const path = require("path"); // 導入我們自己寫的mysql模塊 const db = require(path.join(__dirname, "03-我們自己寫一個mysql的模塊.js")); // 創建服務器 const app = express(); // 寫一個查詢所有英雄接口 app.get("/hero/all", (req, res) => { // 這里使用我們自己寫的mysql模塊,來操作數據庫 // 這里的db,就相當于是03那個文件里面暴露出來的對象 // 這個對象里面又connection這個連接 db.connection.query( `select id,heroName,heroSkill,heroIcon from hero where isDelete="false"`, (error, results) => { if (error == null) { res.send({ code: 200, msg: "查詢成功", data: results, }); } else { res.send({ code: 500, msg: "服務器內部錯誤", }); } } ); }); // 開啟服務器 app.listen(4399, () => { console.log("服務器開啟了"); });
//導入模塊 const hm = require("mysql-ithm"); //2.連接數據庫 //如果數據庫存在則連接,不存在則會自動創建數據庫 hm.connect({ host: "localhost", //數據庫地址 port: "3306", user: "root", //用戶名,沒有可不填 password: "lijiazhao123", //密碼,沒有可不填 database: "hm", //數據庫名稱 }); //3.創建Model(表格模型:負責增刪改查) //如果table表格存在則連接,不存在則自動創建 let heroModel = hm.model("hero", { heroName: String, heroSkill: String, }); // 4. 調用api // 4.1 添加單個數據 // heroModel.insert( // { heroName: "波波", heroSkill: "騷的一批" }, // (err, results) => { // console.log(err); // console.log(results); // if (!err) console.log("增加成功"); // } // ); // 4.2 批量添加數據 // let arr = [ // { // heroName: "李白", // heroSkill: "一片詩意的酒,一曲長歌。一劍天涯,但愿長醉不復醒。", // }, // { // heroName: "孫悟空", // heroSkill: "取經之路就在腳下,超脫三界之外,不在五行之中。", // }, // { heroName: "貂蟬", heroSkill: "華麗又漂亮的生存到最后。" }, // ]; // heroModel.insert(arr, (err, results) => { // console.log(err); // console.log(results); // if (!err) console.log("增加成功"); // }); // 4.3 查詢所有數據 // heroModel.find((err, results) => { // console.log(results); // }); // 4.4 根據數據庫字段查詢部分數據 // ['name'] : 將要查詢的字段放入數組中 // heroModel.find(["heroName", "heroSkill"], (err, results) => { // console.log(results); // }); // 4.5 根據條件查詢數據 // 'id=1' : 查詢id為1的數據 (查詢條件可以參考sql語句) //例如 'age>10' : 查詢age超過10的數據 //例如 'name>"張三"' : 查詢名字為張三的數據,注意字符串添加引號 // heroModel.find("id>2", (err, results) => { // console.log(results); // }); // 4.6 將數據庫中 id = 1 的數據,age修改為30 // heroModel.update( // "id=2", // { // heroName: "千年之狐", // heroSkill: "青丘之靈的靈魂不會永遠漂泊,因為我在這里", // }, // (err, results) => { // console.log(results); // } // ); //4.1 刪除所有 id>3 的數據 // 這里刪除是真正的把數據刪掉 // 實際開發的時候不會用這個,因為開放的時候一般是軟刪除(使用更新) heroModel.delete("id>3", (err, results) => { console.log(results); });
抓包
用到以下第三方庫
crewler
功能介紹:
服務器端 DOM 和自動 jQuery 插入,使用 Cheerio(默認)或 JSDOM
可配置的池大小和重做
控制速率限制
請求的優先級隊列
強制 8 模式, 讓爬網程序處理與字符集檢測和轉換
兼容 4.x 或較新版本
// 1. 抓包:用爬蟲crawler插件來爬網頁上的數據 // 1. 抓包 // 導包 var Crawler = require("crawler"); // 創建一個爬蟲實例 var c = new Crawler({ maxConnections: 10, // This will be called for each crawled page callback: function (error, res, done) { if (error) { console.log(error); } else { var $ = res.$; // $ is Cheerio by default //a lean implementation of core jQuery designed specifically for the server // console.log(JSON.parse(res.body)); // 所有的英雄,這是一個包含了很多對象的數組 // 所有的英雄 都要去獲取他的頭像和技能 // 所以要遍歷出每一個英雄的ename,憑借一個詳情頁路徑重新發請求 JSON.parse(res.body).forEach((v) => { // console.log(`https://pvp.qq.com/web201605/herodetail/${v.ename}.shtml`); // Queue just one URL, with default callback xq.queue(`https://pvp.qq.com/web201605/herodetail/${v.ename}.shtml`); }); } done(); }, }); // 聲明一個全局遍歷heros數組,用來存放所有的英雄的 let heros = []; // Queue just one URL, with default callback c.queue("https://pvp.qq.com/web201605/js/herolist.json"); // 創建一個請求詳情的爬蟲實例 var xq = new Crawler({ maxConnections: 10, // This will be called for each crawled page callback: function (error, res, done) { if (error) { console.log(error); } else { var $ = res.$; // $ is Cheerio by default //a lean implementation of core jQuery designed specifically for the server // 英雄名字 英雄技能 英雄頭像 // console.log($(".cover-name").text(), $(".skill-name>b").first().text()); // console.log("https:" + $(".ico-play").prev("img").attr("src")); // 把獲取到的英雄名字 英雄技能 英雄頭像都添加到這個數組中 heros.push({ heroName: $(".cover-name").text(), heroSkill: $(".skill-name>b").first().text(), heroIcon: "https:" + $(".ico-play").prev("img").attr("src"), isDelete: false, }); } done(); }, }); // 要等待所有的請求全部做完之后,才入庫 xq.on("drain", function () { // For example, release a connection to database. // 調用API:添加數據 heroModel.insert(heros, (err, results) => { console.log(err); console.log(results); if (!err) console.log("增加成功"); }); });
入庫
用到以下第三方庫
就是用來操作MySQL的
// 2. 入庫:用mysql-ithm插件把爬到的數據裝進數據庫中 //1.導入模塊 const hm = require("mysql-ithm"); //2.連接數據庫 //如果數據庫存在則連接,不存在則會自動創建數據庫 hm.connect({ host: "localhost", //數據庫地址 port: "3306", user: "root", //用戶名,沒有可不填 password: "lijiazhao123", //密碼,沒有可不填 database: "wzry", //數據庫名稱 }); //3.創建Model(表格模型:負責增刪改查) //如果table表格存在則連接,不存在則自動創建 let heroModel = hm.model("hero", { heroName: String, heroSkill: String, heroIcon: String, isDelete: String, });
以上是“Nodejs怎么操作數據庫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。