mysql:
select * from tutorials; # CREATE TABLE IF NOT EXISTS `tutorials` (`id` INTEGER NOT NULL auto_increment , `title` VARCHAR(255), `description` VARCHAR(255), `published` TINYINT(1), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; insert into tutorials values(1,'geovindu','geovidu',1,'2025-05-04','2025-05-04'); insert into tutorials values(2,'涂聚文','涂聚文',0,'2025-05-04','2025-05-04');
/** * dbConfig.js * node 20 vue.js 3.0 * ide: vscode * mysql 8.0 * npm install express sequelize mysql2 cors */ const dbConfig = { HOST: "localhost", USER: "root", PASSWORD: "geovindu", DB: "geovindu", dialect: "mysql", pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } }; export default dbConfig; /** * select * from tutorials; # CREATE TABLE IF NOT EXISTS `tutorials` (`id` INTEGER NOT NULL auto_increment , `title` VARCHAR(255), `description` VARCHAR(255), `published` TINYINT(1), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; insert into tutorials values(1,'geovindu','geovidu',1,'2025-05-04','2025-05-04'); insert into tutorials values(2,'涂聚文','涂聚文',2,'2025-05-04','2025-05-04'); * */ /** * models/tutorial.model.js * node 20 vue.js 3.0 * ide: vscode * mysql 8.0 * npm install express sequelize mysql2 cors */ //module.exports const Tutorial = (sequelize, Sequelize) => { const Tutorial = sequelize.define("tutorial", { title: { type: Sequelize.STRING }, description: { type: Sequelize.STRING }, published: { type: Sequelize.BOOLEAN } }); return Tutorial; }; export default Tutorial; /** * models/index.js * node 20 vue.js 3.0 * ide: vscode * mysql 8.0 * npm install express sequelize mysql2 cors */ import dbConfig from "../db.config.js"; import Sequelize from "sequelize"; import tutorials from "./tutorial.model.js" const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, { host: dbConfig.HOST, dialect: dbConfig.dialect, operatorsAliases: false, pool: { max: dbConfig.pool.max, min: dbConfig.pool.min, acquire: dbConfig.pool.acquire, idle: dbConfig.pool.idle } }); const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; //db.tutorials = require("./tutorial.model.js")(sequelize, Sequelize); db.tutorials=tutorials(sequelize, Sequelize); //module.exports = db; export default db; /** * controllers/tutorial.controller.js * node 20 vue.js 3.0 * ide: vscode * mysql 8.0 * npm install express sequelize mysql2 cors */ import db from "../models/index.js"; const Tutorial = db.tutorials; const Op = db.Sequelize.Op; //module.exports. const create = (req, res) => { // Validate request if (!req.body.title) { res.status(400).send({ message: "Content can not be empty!" }); return; } // Create a Tutorial const tutorial = { title: req.body.title, description: req.body.description, published: req.body.published ? req.body.published : false }; // Save Tutorial in the database Tutorial.create(tutorial) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while creating the Tutorial." }); }); }; //exports.create; // exports.create = create; //module.exports. const findAll = (req, res) => { const title = req.query.title; var condition = title ? { title: { [Op.like]: `%${title}%` } } : null; Tutorial.findAll({ where: condition }) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving tutorials." }); }); }; //exports.findAll = findAll; //findByPk //module.exports. const findOne = (req, res) => { const id = req.params.id; Tutorial.findByPk(id) .then(data => { if (data) { res.send(data); } else { res.status(404).send({ message: `Cannot find Tutorial with id=${id}.` }); } }) .catch(err => { res.status(500).send({ message: "Error retrieving Tutorial with id=" + id }); }); }; //exports.findOne = findOne; // module.exports. const update = (req, res) => { const id = req.params.id; Tutorial.update(req.body, { where: { id: id } }) .then(num => { if (num == 1) { res.send({ message: "Tutorial was updated successfully." }); } else { res.send({ message: `Cannot update Tutorial with id=${id}. Maybe Tutorial was not found or req.body is empty!` }); } }) .catch(err => { res.status(500).send({ message: "Error updating Tutorial with id=" + id }); }); }; // exports.update = update; //destroy module.exports. const deleteid = (req, res) => { const id = req.params.id; Tutorial.destroy({ where: { id: id } }) .then(num => { if (num == 1) { res.send({ message: "Tutorial was deleted successfully!" }); } else { res.send({ message: `Cannot delete Tutorial with id=${id}. Maybe Tutorial was not found!` }); } }) .catch(err => { res.status(500).send({ message: "Could not delete Tutorial with id=" + id }); }); }; //exports.Delete = Delete; //destroy module.exports const deleteAll = (req, res) => { Tutorial.destroy({ where: {}, truncate: false }) .then(nums => { res.send({ message: `${nums} Tutorials were deleted successfully!` }); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while removing all tutorials." }); }); }; //exports.deleteAll = deleteAll; //module.exports. const findAllPublished = (req, res) => { Tutorial.findAll({ where: { published: true } }) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving tutorials." }); }); }; //exports.findAllPublished = findAllPublished; // 这个命名问题 tutorials // 使用 ES6 的默认导出语法,直接导出包含所有函数的对象 export default { findAllPublished, deleteAll, deleteid, update, findOne, findAll, create }; //function //module.exports={findAllPublished,deleteAll,Delete,update,findOne,findAll,create}; /** * routes/tutorial.routes.js * node 20 vue.js 3.0 * ide: vscode * mysql 8.0 * npm install express sequelize mysql2 cors * https://www.bezkoder.com/node-js-express-sequelize-mysql/ * 路由报错,还没有配置好 数据库连接OK */ import express from "express" import tutorials from "../controllers/tutorial.controller.js" //import Tutorial from "../models/tutorial.model.js"; //module.exports const routes= app => { //const tutorials = require("../controllers/tutorial.controller.js"); var router = express.Router(); // Create a new Tutorial //app.post("/", Tutorial.findAll); router.post("/",tutorials.create) // Retrieve all Tutorials router.get("/", tutorials.findAll); /**/ // Retrieve all published Tutorials router.get("/published", tutorials.findAll); // Retrieve a single Tutorial with id router.get("/:id", tutorials.findOne); // Update a Tutorial with id router.put("/:id", tutorials.update); // Delete a Tutorial with id router.put("/:id", tutorials.deleteid); // Delete all Tutorials router.put("/", tutorials.deleteAll); //app.use('/api/tutorials', router); app.use('/api/tutorials',router); }; export default routes; /** * server.js * node 20 vue.js 3.0 * ide: vscode * mysql 8.0 * npm install express sequelize mysql2 cors */ import express from "express"; import cors from "cors"; import db from "./models/index.js" import routes from "./routes/turorial.routes.js" const Tutorial = db.tutorials; //require("./app/routes/turorial.routes")(app); const app = express(); //var routes =require("./app/routes/turorial.routes"); routes(app); //app.routes(); var corsOptions = { origin: "http://localhost:8080" }; app.use(cors(corsOptions)); // parse requests of content-type - application/json app.use(express.json()); // parse requests of content-type - application/x-www-form-urlencoded app.use(express.urlencoded({ extended: true })); //http://localhost:8080/models ///http://localhost:8080/tutorials //const db = require("./app/models"); db.sequelize.sync() .then(() => { console.log("Synced db."); }) .catch((err) => { console.log("Failed to sync db: " + err.message); }); //routes(app); //这行路由编译报错 // simple route app.get("/", (req, res) => { /* if (!req.body.title) { res.status(400).send({ message: "Content can not be empty!" }); return; } */ // Create a Tutorial const tutorial = { title: '兴大兴', description: '涂没有什么', published: false, createdAt:'2024-08-05', updatedAt:'2024-08-05' }; // Save Tutorial in the database Tutorial.create(tutorial) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while creating the Tutorial." }); }); res.json({ message: "数据添加成功!." }); }); // set port, listen for requests http://localhost:8080 const PORT = process.env.PORT || 8080; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}.`); });
进入当前文件夹下运行:
node server
标签:node,es6,const,vscode,res,js,tutorials,id,Tutorial From: https://www.cnblogs.com/geovindu/p/18350112