Nodejsオペレーションデータベース


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
  • を使用
  • 構成可能なプールサイズおよびREDO
  • 制御速度制限
  • 要求優先キュー
  • 強制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,
    });