中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nodejs怎么操作數據庫

發布時間:2021-03-18 12:56:34 來源:億速云 閱讀:156 作者:小新 欄目:web開發

這篇文章主要介紹Nodejs怎么操作數據庫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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();

nodejs操作數據庫-刪

// 導包
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();

nodejs操作數據庫-改

// 導包
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();

nodejs操作數據庫-查

// 導包
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模塊

我們自己寫的一個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("服務器開啟了");
});

mysql-ithm 第三方庫的基本使用

//導入模塊
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怎么操作數據庫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正定县| 图木舒克市| 阿尔山市| 揭东县| 资讯| 大冶市| 扎囊县| 木里| 嘉荫县| 进贤县| 大竹县| 资讯| 定襄县| 乌恰县| 酉阳| 保亭| 新丰县| 石狮市| 行唐县| 土默特右旗| 乌拉特前旗| 左权县| 惠来县| 博客| 治多县| 牟定县| 友谊县| 历史| 建德市| 安塞县| 保定市| 天长市| 永昌县| 麻城市| 旬邑县| 孝义市| 凤阳县| 西平县| 孟津县| 新乡县| 临沭县|