小言_互联网的博客

使用NetBeans IDE创建简单Node.js,Express和MySQL CRUD Web应用程序

203人阅读  评论(0)

在本教程中,我将与您分享如何使用node.js和mysql创建CRUD(创建读取更新删除)应用程序。

不仅如此,我还将分享如何使用引导程序模式进行输入和更新表单。

这样,CRUD应用程序将具有响应性并且对用户友好。

让我们开始吧。

 

第1步、介绍

这个很重要!

在本教程中,您将学习如何使用node.js和mysql创建CRUD操作。

在本教程中,我将使用Bootstrap和Jquery。

如果没有引导和jQuery,请下载它的官方网站上getbootstrap.comjquery.com

 

第2步、创建数据库结构

创建一个新数据库,在这里我创建一个名为crud_db的数据库。

如果使用相同的名称创建它,则更好。

要在MySQL中创建数据库,可以通过执行以下查询来完成:

CREATE DATABASE crud_db;

 

上面的SQL命令将创建一个名为crud_db的数据库。

接下来,在crud_db数据库中创建一个表。

在这里,我创建了一个名为“ product ”的表。

如果使用相同的名称创建它,则更好。 

要创建“产品”表,可以通过执行以下SQL命令来完成:

CREATE TABLE `product` (
    `product_id` INT(10,0) NOT NULL AUTO_INCREMENT,
    `product_name` VARCHAR(200) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
    `product_price` INT(10,0) NULL DEFAULT NULL,
    PRIMARY KEY (`product_id`) USING BTREE
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB
;
 

 

上面的SQL命令将创建一个具有以下字段的“ product ”表:product_id,product_name和product_price。

 

第3步、安装依赖项

在安装依赖项之前,请创建一个NetBeans Project,并将其命名为nodejs-mysql-crud

如下图所示:

 

在本教程中,我们需要以下4个依赖项:

1. Express(node.js框架)

2. MySQL(node.js的mysql驱动程序)

3.Body-parser(用于处理正文请求的中间件)

4.Handlebars (模板引擎)

使用“ NPM”(节点程序包管理器)可以很容易地在node.js上安装依赖项。

您可以在“终端”或“命令提示符”中运行NPM。

但是,在本教程中,我不使用命令提示符,而是使用NetBeans IDE Project右键菜单中的npm install。

在安装依赖项之前,我们需要为项目创建package.json文件。

NetBeans IDE创建项目时自动创建一个package.json文件。

打开并修改package.json文件,它将如下所示:


     
  1. {
  2. "name": "nodejs-mysql-crud",
  3. "version": "1.0.0",
  4. "keywords": [
  5. "util",
  6. "functional",
  7. "server",
  8. "client",
  9. "browser"
  10. ],
  11. "author": "Administrator",
  12. "contributors": [],
  13. "dependencies": {
  14. "body-parser": "^1.18.3",
  15. "express": "^4.16.3",
  16. "hbs": "^4.0.1",
  17. "mysql": "^2.16.0"
  18. }
  19. }
 

 

也可以通过在终端中键入以下命令来安装所需的所有依赖项:

npm install --save express mysql body-parser hbs

 

上面的命令将安装您需要的所有依赖项:express,mysql,body-parser和handlebars。

 

第4步、项目结构

然后在NetBeans IDE项目Sources中创建一个新文件夹。在这里,我创建了两个文件夹,publicviews文件夹。

如下图所示:

之后,在公共文件夹内创建cssjs文件夹。

然后将先前下载的bootstrap.css文件复制到public / css /文件夹中。

然后将bootstrap.js和jquery文件复制到public / js /文件夹中。

这样我们的项目结构如下图所示:

 

第5步、Index.js

创建一个名为index.js的文件。如下图所示:

然后打开index.js并输入以下代码:


     
  1. //use path module
  2. const path = require( 'path');
  3. //use express module
  4. const express = require( 'express');
  5. //use hbs view engine
  6. const hbs = require( 'hbs');
  7. //use bodyParser middleware
  8. const bodyParser = require( 'body-parser');
  9. //use mysql database
  10. const mysql = require( 'mysql');
  11. const app = express();
  12. //Create connection
  13. const conn = mysql.createConnection({
  14. host: 'localhost',
  15. user: 'root',
  16. password: 'root',
  17. database: 'crud_db'
  18. });
  19. //connect to database
  20. conn.connect( (err) => {
  21. if (err)
  22. throw err;
  23. console.log( 'Mysql Connected...');
  24. });
  25. //set views file
  26. app.set( 'views', path.join(__dirname, 'views'));
  27. //set view engine
  28. app.set( 'view engine', 'hbs');
  29. app.use(bodyParser.json());
  30. app.use(bodyParser.urlencoded({ extended: false}));
  31. //set public folder as static folder for static file
  32. app.use( '/assets', express.static(__dirname + '/public'));
  33. //route for homepage
  34. app.get( '/', (req, res) => {
  35. let sql = "SELECT * FROM product";
  36. let query = conn.query(sql, (err, results) => {
  37. if (err)
  38. throw err;
  39. res.render( 'product_view', {
  40. results: results
  41. });
  42. });
  43. });
  44. //route for insert data
  45. app.post( '/save', (req, res) => {
  46. let data = { product_name: req.body.product_name, product_price: req.body.product_price};
  47. let sql = "INSERT INTO product SET ?";
  48. let query = conn.query(sql, data, (err, results) => {
  49. if (err)
  50. throw err;
  51. res.redirect( '/');
  52. });
  53. });
  54. //route for update data
  55. app.post( '/update', (req, res) => {
  56. let sql = "UPDATE product SET product_name='" + req.body.product_name + "', product_price='" + req.body.product_price + "' WHERE product_id=" + req.body.id;
  57. let query = conn.query(sql, (err, results) => {
  58. if (err)
  59. throw err;
  60. res.redirect( '/');
  61. });
  62. });
  63. //route for delete data
  64. app.post( '/delete', (req, res) => {
  65. let sql = "DELETE FROM product WHERE product_id=" + req.body.product_id + "";
  66. let query = conn.query(sql, (err, results) => {
  67. if (err)
  68. throw err;
  69. res.redirect( '/');
  70. });
  71. });
  72. //server listening
  73. app.listen( 8000, () => {
  74. console.log( 'Server is running at port 8000');
  75. });

 

第6步、视图

在views文件夹中创建一个名为product_view.hbs的文件。如下图:

然后打开product_view.hbs并键入以下代码:


     
  1. <html lang="en">
  2. <head>
  3. <meta charset="utf-8">
  4. <title>CRUD Node.js and Mysql </title>
  5. <link href="/assets/css/bootstrap.css" rel="stylesheet" type="text/css"/>
  6. </head>
  7. <body>
  8. <div class="container">
  9. <h2>Product List </h2>
  10. <button class="btn btn-success" data-toggle="modal" data-target="#myModalAdd">Add New </button>
  11. <table class="table table-striped" id="mytable">
  12. <thead>
  13. <tr>
  14. <th>Product ID </th>
  15. <th>Product Name </th>
  16. <th>Price </th>
  17. <th>Action </th>
  18. </tr>
  19. </thead>
  20. <tbody>
  21. {{#each results}}
  22. <tr>
  23. <td>{{ product_id }} </td>
  24. <td>{{ product_name }} </td>
  25. <td>{{ product_price }} </td>
  26. <td>
  27. <a href="javascript:void(0);" class="btn btn-sm btn-info edit" data-id="{{ product_id }}" data-product_name="{{ product_name }}" data-product_price="{{ product_price }}">Edit </a>
  28. <a href="javascript:void(0);" class="btn btn-sm btn-danger delete" data-id="{{ product_id }}">Delete </a>
  29. </td>
  30. </tr>
  31. {{/each}}
  32. </tbody>
  33. </table>
  34. </div>
  35. <!-- Modal Add Product-->
  36. <form action="/save" method="post">
  37. <div class="modal fade" id="myModalAdd" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  38. <div class="modal-dialog" role="document">
  39. <div class="modal-content">
  40. <div class="modal-header">
  41. <h5 class="modal-title" id="exampleModalLabel">Add New Product </h5>
  42. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  43. <span aria-hidden="true"> &times; </span>
  44. </button>
  45. </div>
  46. <div class="modal-body">
  47. <div class="form-group">
  48. <input type="text" name="product_name" class="form-control" placeholder="Product Name" required>
  49. </div>
  50. <div class="form-group">
  51. <input type="text" name="product_price" class="form-control" placeholder="Price" required>
  52. </div>
  53. </div>
  54. <div class="modal-footer">
  55. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close </button>
  56. <button type="submit" class="btn btn-primary">Save </button>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </form>
  62. <!-- Modal Update Product-->
  63. <form action="/update" method="post">
  64. <div class="modal fade" id="EditModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  65. <div class="modal-dialog" role="document">
  66. <div class="modal-content">
  67. <div class="modal-header">
  68. <h5 class="modal-title" id="exampleModalLabel">Edit Product </h5>
  69. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  70. <span aria-hidden="true"> &times; </span>
  71. </button>
  72. </div>
  73. <div class="modal-body">
  74. <div class="form-group">
  75. <input type="text" name="product_name" class="form-control product_name" placeholder="Product Name" required>
  76. </div>
  77. <div class="form-group">
  78. <input type="text" name="product_price" class="form-control price" placeholder="Price" required>
  79. </div>
  80. </div>
  81. <div class="modal-footer">
  82. <input type="hidden" name="id" class="product_id">
  83. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close </button>
  84. <button type="submit" class="btn btn-primary">Update </button>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </form>
  90. <!-- Modal Delete Product-->
  91. <form id="add-row-form" action="/delete" method="post">
  92. <div class="modal fade" id="DeleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  93. <div class="modal-dialog">
  94. <div class="modal-content">
  95. <div class="modal-header">
  96. <h5 class="modal-title" id="myModalLabel">Delete Product </h5>
  97. <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> &times; </span> </button>
  98. </div>
  99. <div class="modal-body">
  100. <strong>Are you sure to delete this data? </strong>
  101. </div>
  102. <div class="modal-footer">
  103. <input type="hidden" name="product_id" class="form-control product_id2" required>
  104. <button type="button" class="btn btn-default" data-dismiss="modal">Close </button>
  105. <button type="submit" class="btn btn-success">Delete </button>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. </form>
  111. <script src="/assets/js/jquery-3.6.0.js"> </script>
  112. <script src="/assets/js/bootstrap.js"> </script>
  113. <script>
  114. $( document).ready( function(){
  115. //showing data to edit modal $('#mytable').on('click','.edit',function(){
  116. var product_id = $( this).data( 'id');
  117. var product_name = $( this).data( 'product_name');
  118. var product_price = $( this).data( 'product_price');
  119. $( '#EditModal').modal( 'show');
  120. $( '.product_name').val(product_name);
  121. $( '.price').val(product_price);
  122. $( '.product_id').val(product_id);
  123. });
  124. //showing delete record modal
  125. $( '#mytable').on( 'click', '.delete', function(){
  126. var product_id = $( this).data( 'id');
  127. $( '#DeleteModal').modal( 'show');
  128. $( '.product_id2').val(product_id);
  129. });
  130. });
  131. </script>
  132. </body>
  133. </html>

 

 第7步、测试

测试该应用程序,以确保我们创建的原始应用程序运行良好。

要运行该应用程序,请鼠标右键点击index.文件,在右键菜单中选择Run File。

或在终端上键入以下命令。

node index

然后它将出现在控制台消息“服务器正在端口8000上运行”和“ Mysql Connected”上。

 

如下图所示:

 

然后打开浏览器并输入以下URL:

http://本地主机:8000 /

如果运行良好,则它将如下图所示:

单击“添加新产品”按钮,然后将出现“添加新产品”模式,如下图所示:

然后输入产品名称和价格,然后单击保存按钮。

然后您可以看到如下图所示的结果:

单击“编辑”按钮以编辑记录,然后将出现“编辑产品”模式,如下图所示:

编辑要编辑的数据,然后单击“更新”按钮。

然后您可以看到如下图所示的结果:

要删除记录,请单击“删除”按钮,然后将显示确认模式,如下所示:

然后单击删除按钮删除记录。

完成

 

结论:

今天的教程是关于如何使用node.js和mysql构建CRUD应用程序(创建读取更新删除)的。

在本教程中,您学习了如何使用node.js和mysql制作CRUD应用程序。

不仅如此,您还学习了如何将引导程序模式用于输入和更新表单。

那你还在等什么。让我们编码吧!


转载:https://blog.csdn.net/allway2/article/details/116805245
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场