рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдФрд░ MySQL рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ CRUD рдПрдкреАрдЖрдИ рдмрдирд╛рдПрдВ: рдПрдХ рд╣рд┐рд╕реНрд╕рд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред "рдлреБрд▓рд╕реНрдЯреИрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░" рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ , рд╣рдо рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рд╛рдордЧреНрд░реА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕реНрд╡рддрдВрддреНрд░ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рдереАред



рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рд░реВрдЯрд┐рдВрдЧ, рдорд┐рдбрд╡реЗрдЗрдЯреНрд╕ рдФрд░ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред 2020 рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдмрд┐рдирд╛ Node.js рдкрд░ рдПрдХ рдмреИрдХрдПрдВрдб рдмрдирд╛рдирд╛ рдПрдХ рдЕрдЬреАрдм рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдкреНрд░реЗрд╕ Node.js. рдкрд░ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИред
рдЖрдЬ рд╣рдо MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг CRUD API рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЕрдиреБрднрд╡реА Node.js рдкрд╛рдардХ рдкреВрдЫреЗрдЧрд╛, рдХрд┐ MongoDB рдХрд╣рд╛рдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдорддреМрд░ рдкрд░ Node.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рддреБрд░рдВрдд рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрд▓реЗрдЦ рдЙрди PHP рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ Node.js рдХреЛ рдереЛрдбрд╝рд╛ рдЫреВрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдирдП рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдоред рд╣рдо MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЛрдбреЛ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдХреЛрдИ рдЕрдкрдиреЗ рдЯреВрдбреВ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдФрд░ рдпрд╣ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ), рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВред


"рд╡рд╛рд╕реНрддреБрдХрд▓рд╛" рдФрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╕рд╛рд░



рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЯреЛрдбреЛ рдХреЛ рдмрдирд╛рдирд╛, рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ CRUD рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд╣реЛрдЧрд╛ (рд░реАрдб рдЕрдкрдбреЗрдЯ рд╣рдЯрд╛рдПрдВ)ред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рд░рд┐рдПрдХреНрдЯ рдкрд░ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рдФрд░ рд╣рдо рд╕рдм рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рджреЗ рджреВрдВрдЧрд╛:



рдЕрдЧрд▓рд╛, рдореИрдВ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рджреВрдВрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣реИрдВ:

рддрд░реАрдХреЗрдпреВрдЖрд░рдПрд▓рдХреНрд░рд┐рдпрд╛
рдкреНрд░рд╛рдкреНрдд/ рд╕реМрджреЗ рдХрд░рддрд╛ рд╣реИрд╕рднреА рдорд╛рдорд▓реЗ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ
рдкреНрд░рд╛рдкреНрдд/ рд╕реМрджреЗ / реирдирдВрдмрд░ 2 рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдкрдж/ рд╕реМрджреЗ рдХрд░рддрд╛ рд╣реИрдПрдХ рдирдпрд╛ рдорд╛рдорд▓рд╛ рдЬреЛрдбрд╝рдирд╛
рдбрд╛рд▓/ рд╕реМрджреЗ / рейрдЖрдИрдбреА = 3 рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рд╣рдЯрд╛рдПрдБ/ рд╕реМрджреЗ / рейрдЖрдИрдбреА = 3 рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдЯрд╛рдПрдВ
рд╣рдЯрд╛рдПрдБ/ рд╕реМрджреЗ рдХрд░рддрд╛ рд╣реИрд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ

рдЖрдкрдХрд╛ Node.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛

рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ, рдЯрд░реНрдорд┐рдирд▓ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рд╡реИрд╕реЗ, рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╢реАрд░реНрд╖рдХ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ Node.js рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрд╕ рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдВрдХ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    $ mkdir CRUD_API
    $ cd CRUD_API

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ npm init рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдПрдХ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдореИрдВ рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рднрд░ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рдЫреЛрдЯреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░реЗрдВ:

 npm init -y
 

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ package.jsonрдЖрдк рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдЯреИрдЧ, рд▓реЗрдЦрдХ рдЗрддреНрдпрд╛рджрд┐ред

рдлрд┐рд░ рд╣рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛:

  npm i express mysql body-parser --save


рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЧрд┐рддреБрдм рдореЗрдВ рднреЗрдЬрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдП .gitignoreрддрд╛рдХрд┐ рд╕рдмрд╕реЗ рднрд╛рд░реА рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рди рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЦреБрдж рдХреЛ рдЕрдкрдорд╛рдирд┐рдд рди рдХрд░реЗрдВ ред рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

    touch .gitignore 
    code .gitignore 

рд╣рдо рд╡рд╣рд╛рдВ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ node_modules, рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдЙрди рдлреЛрд▓реНрдбрд░ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдмрд╛рдж рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдмреЗрд╕рд┐рдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗрдЯрдЕрдк


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ server.js:

    const express = require("express");
    const bodyParser = require("body-parser");
    
    const app = express();
    
    //     json
    app.use(bodyParser.json());
    
    //    : application/x-www-form-urlencoded
    app.use(bodyParser.urlencoded({ extended: true }));
    
    //   response - request
    app.get("/", (req, res) => {
      res.json({ message: "    " });
    });
    
    //  ,   
    app.listen(3001, () => {
      console.log("   3001 ");
    });

рдЕрдм рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

node server.js

рд╣рдореЗрдВ рдЕрдкрдиреА рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдмреЙрдбреА-рдкрд╛рд░реНрд╕рд░ рдкреИрдХреЗрдЬ рд╣рдореЗрдВ рдкрд╛рд░реНрд╕ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ req.bodyрдПрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рдЕрдм рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

  • рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдРрдк рдмрдирд╛рдПрдБ рдЬреЛ app.use () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЙрдбреА-рдкрд╛рд░реНрд╕рд░ рдХреЛ рдорд┐рдбрд▓реЗрд╡рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
  • рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рд╕рд╛ рдЖрд╡реЗрджрди рд╣реИ, рдмрд╕ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП 3001 рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдиреЗрдВ

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдкрдирд╛ MySQL рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкрд╛рдардХ рдХреЛ MySQL рдФрд░ MySQLWorkBranch рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реНрд╡рдпрдВ рдПрдХ рдирд╛рдо (DB) рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, TODO), рдФрд░ рдлрд┐рд░ рдмрд┐рдЬрд▓реА рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдХреЙрдкреА / рдЯрд╛рдЗрдк рдХрд░реЗрдВ:

    CREATE TABLE IF NOT EXISTS `todo` (
        id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
        text varchar(255) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ рдиреНрдпреВрдирддрдо рдкрд░ рд╣реЛрдЧрд╛: рдХреЗрд╡рд▓ рдЖрдИрдбреА рдФрд░ рдХреЗрд╕ рдХрд╛ рдкрд╛рдаред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдФрд░ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

рдЖрдЗрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рд╣рдо рд╕реАрдзреЗ рдЕрдкрдиреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдРрдк рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рд╡рд╣рд╛рдВ рд╣рдо рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде db.config.jsрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ config, рдЬреЛ MySQLWorkBranch рдореЗрдВ рдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

  module.exports = {
    HOST: "localhost",
    USER: "pavel",
    PASSWORD: "",
    DB: "TODO"
  };

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЛрдб рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ , рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдлрд┐рд░ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдВрдЧреЗ:

  const mysql = require("mysql");
  const dbConfig = require("../config/db.config.js");
  
  //      
  const connection = mysql.createConnection({
    host: dbConfig.HOST,
    user: dbConfig.USER,
    password: dbConfig.PASSWORD,
    database: dbConfig.DB
  });
  
  //      
  connection.connect(err => {
    if (err) throw error;
    console.log("    ");
  });

  module.exports = connection;
   //  

рдореЙрдбрд▓ рдмрдирд╛рдПрдВ

рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ model, рд╣рдо рдирд╛рдордХ рдПрдХ рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ deal.model.jsред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдореЙрдбрд▓ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдорд╡реАрд╕реА рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдореИрдВ рдПрдХ рдбреАрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдЖрд░рдпреВрдбреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

  • рдПрдХ рдирдП рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг
  • рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдорд╛рдорд▓рд╛ рдЦреЛрдЬрдирд╛
  • рд╕рднреА рдорд╛рдорд▓реЗ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ
  • рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
  • рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдорд╛рдорд▓реЗ рдХреЛ рд╣рдЯрд╛рдПрдВ
  • рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкреВрд░реНрдг рд╡рд┐рд▓реЛрдкрди

рдХреБрд▓, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░рдиреЗ рд╣реИрдВ:

  //   
  const Deal = function(deal) {
    this.text = deal.text;
  };
  //    ,        CRUD,      :
  Deal.create = (newDeal, result) => {
    sql.query("INSERT INTO TODO SET ?", newDeal, (err, res) => {
      //   SQL
      if (err) {
        console.log("error: ", err);
        result(err, null);
        //   ,     
        return;
      }
  
      console.log(" ", { id: res.insertId, ...newDeal });
      result(null, { id: res.insertId, ...newDeal });
    });
  };


рдореИрдВ рдХреЛрдб рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реНрдкреЙрдЗрд▓рд░ рдореЗрдВ рд░рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рдм рд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рдкреИрдЯрд░реНрди рд╡рд╣рд╛рдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ sql рдХрдорд╛рдВрдб рдФрд░ рддрд░реНрдХ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ:

рдХреЛрдб рдХреЗ рдмрд╛рдХреА
Deal.findById = (dealId, result) => {
sql.query(`SELECT * FROM TODO WHERE id = ${dealId}`, (err, res) => {
if (err) {
console.log(┬лerror: ┬╗, err);
result(err, null);
return;
}

if (res.length) {
console.log(┬л : ┬╗, res[0]);
result(null, res[0]);
return;
}

//
result({ kind: ┬лnot_found┬╗ }, null);
});
};

Deal.getAll = result => {
sql.query(┬лSELECT * FROM TODO┬╗, (err, res) => {
if (err) {
console.log(┬лerror: ┬╗, err);
result(null, err);
return;
}

console.log(┬лdeals: ┬╗, res);
result(null, res);
});
};

Deal.updateById = (id, deal, result) => {
sql.query(
┬лUPDATE TODO SET text =? WHERE id = ?┬╗,
[deal.text, id],
(err, res) => {
if (err) {
console.log(┬лerror: ┬╗, err);
result(null, err);
return;
}

if (res.affectedRows == 0) {
result({ kind: ┬лnot_found┬╗ }, null);
return;
}

console.log(┬л ┬╗, { id: id, ...deal });
result(null, { id: id, ...deal });
}
);
};

Deal.remove = (id, result) => {
sql.query(┬лDELETE FROM TODO WHERE id = ?┬╗, id, (err, res) => {
if (err) {
console.log(┬лerror: ┬╗, err);
result(null, err);
return;
}

if (res.affectedRows == 0) {
// id
result({ kind: ┬лnot_found┬╗ }, null);
return;
}
console.log(┬л ┬╗, id);
result(null, res);
});
};

Deal.removeAll = result => {
sql.query(┬лDELETE FROM TODO┬╗, (err, res) => {
if (err) {
console.log(┬лerror: ┬╗, err);
result(null, err);
return;
}

console.log(`deleted ${res.affectedRows} deals`);
result(null, res);
});
};



рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╣реАред рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдЖ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреАрдЫреЗ рдХреА рдУрд░ рд▓рд┐рдЦрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:


All Articles