NodeJS
这次我想分享一个在 Node.js 和 MySQL 中进行 CRUD 操作的基本且简单的示例。在 MySQL 中找到 Node.js 教程有点困难,因为人们倾向于使用 Mongoose 而不是 MySQL。开始之前,请注意此应用程序的环境。
- 我使用的是 Ubuntu
- NPM、Express
- MySQL for Node
我还没有在 Windows 上测试过。但我打赌这也会起作用。
安装上面的所有内容
在 Ubuntu 中安装 Node.js、NPM 和 Express
安装完成后,让我们开始创建您的项目文件夹:
ubuntu@AcerXtimeline:~$ express hello_world
hello_world 文件夹准备就绪后,安装 MySQL。进入 hello_world
ubuntu@AcerXtimeline:~/hello_world$ npm install mysql<br>
我们需要 Express 中的连接管理器。安装它
ubuntu@AcerXtimeline:~/hello_world$ npm install express-myconnection
现在看看这个文件夹结构

看看你的文件夹结构,将其与上图进行比较。创建你还没有的新文件夹/文件就像图片上一样在文件夹中。
我们准备好了吗?
1。管理 MySQL 数据库:nodejs 并创建表客户(id、姓名、地址、电子邮件、电话)。 或者你可以在源代码中导入 SQL(见本文末尾)
2.打开 app.js 。默认情况下,已经为您提供了一些代码。我们只需要添加更多代码。
/**<br> * Module dependencies.<br> */<br>var express = require('express');<br>var routes = require('./routes');<br>var http = require('http');<br>var path = require('path');<br>//load customers route<br>var customers = require('./routes/customers'); <br>var app = express();<br>var connection= require('express-myconnection'); <br>var mysql = require('mysql');<br>// all environments<br>app.set('port', process.env.PORT || 4300);<br>app.set('views', path.join(__dirname, 'views'));<br>app.set('view engine', 'ejs');<br>//app.use(express.favicon());<br>app.use(express.logger('dev'));<br>app.use(express.json());<br>app.use(express.urlencoded());<br>app.use(express.methodOverride());<br>app.use(express.static(path.join(__dirname, 'public')));<br>// development only<br>if ('development' == app.get('env')) {<br>app.use(express.errorHandler());<br>}<br>/*------------------------------------------<br>connection peer, register as middleware<br>type koneksi : single,pool and request <br>-------------------------------------------*/<br>app.use(<br><br>connection(mysql,{<br><br>host: 'localhost',<br>user: 'root',<br>password : '',<br>port : 3306, //port mysql<br>database:'nodejs'<br>},'request')<br>);//route index, hello world<br>app.get('/', routes.index);//route customer list<br>app.get('/customers', customers.list);//route add customer, get n post<br>app.get('/customers/add', customers.add);<br>app.post('/customers/add', customers.save);//route delete customer<br>app.get('/customers/delete/:id', customers.delete_customer);//edit customer route , get n post<br>app.get('/customers/edit/:id', customers.edit); <br>app.post('/customers/edit/:id',customers.save_edit);<br>app.use(app.router);<br>http.createServer(app).listen(app.get('port'), function(){<br>console.log('Express server listening on port ' + app.get('port'));<br>});
记住创建新文件/文件夹,如上图所示。
现在,我们需要代码来进行增删改查。文件位于routes/customers.js
/*<br> * GET customers listing.<br> */<br>exports.list = function(req, res){<br>req.getConnection(function(err,connection){<br> <br> connection.query('SELECT * FROM customer',function(err,rows) {<br><br>if(err)<br> console.log("Error Selecting : %s ",err );<br> <br>res.render('customers',{page_title:"Customers - Node.js",data:rows});<br> <br> });<br> <br>});<br><br>};<br>exports.add = function(req, res){<br>res.render('add_customer',{page_title:"Add Customers-Node.js"});<br>};<br>exports.edit = function(req, res){<br><br>var id = req.params.id;<br><br>req.getConnection(function(err,connection){<br> <br> connection.query('SELECT * FROM customer WHERE id = ?',[id],function(err,rows)<br>{<br><br>if(err)<br>console.log("Error Selecting : %s ",err );<br> <br>res.render('edit_customer',{page_title:"Edit Customers - Node.js",data:rows});<br> <br> });<br> <br>}); <br>};<br>/*Save the customer*/<br>exports.save = function(req,res){<br><br>var input = JSON.parse(JSON.stringify(req.body));<br><br>req.getConnection(function (err, connection) {<br><br>var data = {<br><br>name: input.name,<br>address : input.address,<br>email : input.email,<br>phone : input.phone <br><br>};<br><br>var query = connection.query("INSERT INTO customer set ? ",data, function(err, rows)<br>{<br><br>if (err)<br>console.log("Error inserting : %s ",err );<br> <br>res.redirect('/customers');<br><br>});<br><br> // console.log(query.sql); get raw query<br><br>});<br>};<br>exports.save_edit = function(req,res){<br><br>var input = JSON.parse(JSON.stringify(req.body));<br>var id = req.params.id;<br><br>req.getConnection(function (err, connection) {<br><br>var data = {<br><br>name: input.name,<br>address : input.address,<br>email : input.email,<br>phone : input.phone <br><br>};<br><br>connection.query("UPDATE customer set ? WHERE id = ? ",[data,id], function(err, rows)<br>{<br><br>if (err)<br>console.log("Error Updating : %s ",err );<br> <br>res.redirect('/customers');<br><br>});<br><br>});<br>};<br><br>exports.delete_customer = function(req,res){<br><br> var id = req.params.id;<br><br> req.getConnection(function (err, connection) {<br><br>connection.query("DELETE FROM customerWHERE id = ? ",[id], function(err, rows)<br>{<br><br> if(err)<br> console.log("Error deleting : %s ",err );<br><br> res.redirect('/customers');<br> <br>});<br><br> });<br>};
这里是列出客户的html代码(ejs模板)
<br><div class="page-data"> <br> <div class="data-btn"> <br> <button onclick="addUser();">+ Add</button><br> </div> <br> <div class="data-table"> <br><table border="1" cellpadding="7" cellspacing="7"> <br><tr> <br><th width="50px">No</th> <br><th>Name</th> <br><th>Address</th> <br><th>Phone</th> <br><th>Email</th> <br><th width="120px">Action</th> <br> </tr> <br><br> for(var i = 0;i <br><tr> <br><td></td> <br><td></td> <br><td></td> <br><td></td> <br><td></td> <br><td> <br><a class="a-inside edit" href="../customers/edit/<%=data%5Bi%5D.id%>">Edit</a> <br><a class="a-inside delete" href="../customers/delete/<%=data%5Bi%5D.id%>">Delete</a> <br> </td> <br> </tr> <br><br> }else{ %><br> <tr> <br><td colspan="3">No user</td> <br> </tr> <br><br> <br> </table> <br> </div> <br> </div><br>
好吧,其实我懒得把它全部写出来这里...这将是一个很长的卷轴:(。请原谅我。我想你可以在此处下载源代码nodecrud,然后在下面的评论中提出疑问或问题。
运行源代码:
ubuntu@AcerXtimeline:~/hello_world$ node app.js
http://localhost:4300/customers<br>
源代码将产生如下内容:




mysqlviewshavelimitations:1)他们不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinSorsubqueries.2)他们canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

porthusermanagementInmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)复杂的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

通过PHP网页界面添加MySQL用户可以使用MySQLi扩展。步骤如下:1.连接MySQL数据库,使用MySQLi扩展。2.创建用户,使用CREATEUSER语句,并使用PASSWORD()函数加密密码。3.防止SQL注入,使用mysqli_real_escape_string()函数处理用户输入。4.为新用户分配权限,使用GRANT语句。

mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而alenosqloptionslikemongodb,redis和calablesolutionsoluntionsoluntionsoluntionsolundortionsolunsolunsstructureddata.blobobobsimplobissimplobisslowderperformandperformanceperformancewithlararengelitiate;

toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollationsEttingsefectery.1)usecharforfixed lengengters lengengtings,varchar forbariaible lengength,varchariable length,andtext/blobforlabforlargerdata.2 seterters seterters seterters seterters


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版
好用的JavaScript开发工具