用MySQL构建一个工作跟踪流程_MySQL
为了了解在Node中如何使用MySQL,我们来看一个需要RDBMS的程序。
假设你要创建一个Web程序,用来记录你是如何度过工作日的。这需要记录工作的日期,花在工作上的时间,以及工作完成情况的描述。
1. 系统分析
1.1 系统流程
这个程序会有个表单,用来输入工作的详细信息,如图:
? 工作信息输入后,可以被归档或删除,让它不再显示在用来输入更多工作的输入域上方,如图。 点击“Archived Work”链接可以把之前归档的工作项全部显示出来。

?
1.2 系统任务
创建程序逻辑 创建程序工作所需的辅助函数 编写让你可以用MySQL添加、删除、更新和获取数据的函数 编写渲染HTML记录和表单的代码1.3 使用模块
这个程序会用Node内置的http模块实现Web服务器的功能,用一个第三方模块跟MySQL服务器交互。一个名为timetrack的定制模块,它是程序特有的函数,用来在MySQL中存储、修改和获取数据。图5-4是这个程序的概览。
先用下面这条命令安装这个很受欢迎的MySQL Node模块:
<code class="language-npm hljs cmake">npm install mysql</code>
?
1.4 最终效果
最终结果如图5-5所示,一个可以用来记录所做工作的简单Web程序,还可以回顾、归档及删除工作记录。
?
2. 创建程序的逻辑
接下来需要创建两个文件存放程序逻辑。这个两个文件分别是: timetrack_server.js,用来启动程序; timetrack.js,包含程序相关功能的模块。
先创建timetrack_server.js,把代码清单5-7中的代码放到里面。这段代码包含Node的HTTPAPI,程序特定的逻辑以及MySQL API。根据你的MySQL配置填入host、 user和password这些设定值。
<code class="language-javascript hljs ">var http = require( 'http' ) ; var work = require( './lib/timetrack' ) ; var mysql = require( 'mysql' ) ; var db = mysql.createConnection( { host: '127.0.0.1', user: 'root', password: 'root', database: 'timetrack' } ) ;</code>
接下来添加代码清单5-8中的逻辑,定义Web程序的行为。用这个程序可以浏览、添加和删除工作执行记录。此外还可以归档工作记录。被归档的工作记录不再出现在主页面上,但还可以在一个单独的Web页面上浏览。
<code class="language-javascript hljs ">var server = http.createServer( function (req, res) { switch ( req.method ) { case 'POST': { switch ( req.url ) { case '/': { work.add( db, req, res ) ; break ; } case '/archive': { work.archive( db, req, res ) ; break ; } case '/delete': { work.delete(db, req, res) ; break ; } } break ; } case 'GET': { switch ( req.url ) { case '/': { work.show( db, res ) ; break ; } case 'http://blog.csdn.net/archived': { work.showArchived( db, res ) ; break ; } } break ; } } } ) ;</code>
代码清单5-9是timetrack_server.js中的最后一块代码。这段代码创建了一个数据库表(如果不存在的话) , 启动HTTP服务器,监听本机的3000端口。所有的node-mysql查询都用query函数执行。
<code class="language-javascript hljs ">db.query( 'create table if not exists work ( ' + 'id int(10) not null auto_increment, ' + 'hours decimal(5, 2) default 0, ' + 'date date, ' + 'archived int(1) default 0, ' + 'description longtext, ' + 'primary key(id) )', function (err) { if (err) throw err ; console.log( 'Server started...' ) ; server.listen( 3000, '127.0.0.1' ) ; } ) ;</code>
3. 创建辅助函数发送HTML,创建表单,接收表单数据
启动程序的文件已经完成,该创建定义程序其他功能的文件了。创建一个名为lib的目录,然后在这个目录下创建文件timetrack.js。把代码清单5-10中的代码放到这个文件中,其中包含Node querystring API,并定义了辅助函数,用来发送Web页面HTML,接收通过表单提交的数据。
<code class="language-npm hljs cmake">npm install querystring</code>
<code class="language-javascript hljs ">var qs = require( 'querystring' ) ; exports.sendHtml = function (res, html) { res.setHeader( 'Content-Type', 'text/html' ) ; res.setHeader( 'Content-Length', Buffer.byteLength( html ) ) ; res.end( html ) ; } ; exports.parseReceivedData = function (req, cb) { var body = '' ; req.setEncoding( 'utf8' ) ; req.on( 'data', function (chunk) { body = chunk ; } ) ; req.on( 'end', function () { var data = qs.parse( body ) ; cb( data ) ; } ) ; } ; exports.actionForm = function (id, path, label) { var html = '</code>
' ; return html ; } ;
4. 用MySQL添加数据
辅助函数到位了,该编写往MySQL数据库里添加工作记录的代码了。把下面代码清单里的代码添加到timetrack.js中。
<code class="language-javascript hljs ">exports.add = function (db, req, res) { exports.parseReceivedData( req, function (work) { db.query( 'insert into work( hours, date, description ) ' + 'values ( ?, ?, ? )', [ work.hours, work.date, work.description ], function (err) { if (err) throw err ; exports.show( db, res ) ; } ) ; } ) ; } ;</code>
注意上面代码中的问号(?),这是用来指明应该把参数放在哪里的占位符。在添加到查询语句中之前, query方法会自动把参数转义,以防遭受到SQL注入攻击。此外还要留意一下query方法的第二个参数,是一串用来替代占位符的值。
5. 删除MySQL数据
<code class="language-javascript hljs ">exports.delete = function (db, req, res) { exports.parseReceivedData(req, function (work) { db.query( 'delete from work where id = ?', [work.id], function (err) { if (err) throw err ; exports.show( db, res ) ; } ) ; } ) ; } ;</code>
6. 更新MySQL数据
为了实现更新工作记录的逻辑,将它标记为已归档,把下面的代码添加到timetrack.js中。
<code class="language-javascript hljs ">exports.archive = function (db, req, res) { exports.parseReceivedData( req, function (work) { db.query( 'update work set archived = 1 where id = ?', [work.id], function (err) { if (err) throw err ; exports.show( db, res ) ; } ) ; } ) ; } ;</code>
7. 获取MySQL数据
添加、删除、更新工作记录的逻辑已经定义好了,现在可以把代码清单5-14中的逻辑添加到到timetrack中,用来获取工作记录数据(归档的或未归档的),从而把它渲染为HTML。在发起查询时传入了一个回调函数,它的参数rows是用来保存返回的查询结果的。
<code class="language-javascript hljs ">exports.show = function (db, res, showArchived) { console.log( 'in show function' ) ; var query = 'select * from work ' + 'where archived = ? ' + 'order by date desc ' ; var archiveValue = (showArchived) ? 1 : 0 ; console.log( 'archiveValue:' + archiveValue ) ; db.query( query, [archiveValue], function (err, rows) { console.log( rows ) ; if (err) throw err ; html = (showArchived) ? '' : 'Archived Work ' ; html += exports.workHitlistHtml( rows ) ; html += exports.workFormHtml() ; exports.sendHtml(res, html) ; } ) ; } ; exports.showArchived = function (db, res) { exports.show(db, res, true) ; }</code>
8. 渲染MySQL记录
将下面代码清单中的代码添加到timetrack.js中。它会将工作记录渲染为HTML。
<code class="language-javascript hljs ">exports.workHitlistHtml = function (rows) { var html = '' ; for( var i in rows ) { html += '' ; html += '' html += '' html += '' if ( !rows[i].archived ) { html += '' } html += '' ; } html += '</code>
' + rows[i].date + ' |
' + rows[i].hours + ' |
' + rows[i].description + ' |
' + exports.workArchiveForm( rows[ i ].id ) + ' |
' +exports.workDeleteForm( rows[i].id )+ ' |
' ; return html ; } ;
9. 渲染HTML表单
<code class="language-javascript hljs ">exports.workFormHtml = function () { var html = '</code>
' ; return html ; } ; exports.workArchiveForm = function (id) { return exports.actionForm(id, '/archive', 'Archive') ; } ; exports.workDeleteForm = function (id) { return exports.actionForm( id, '/delete', 'Delete' ) ; } ;
10. 试一下
程序已经做完了,现在可以运行了。记得先用MySQL管理工具创建名为timetrack的数据库。然后在命令行中用下面的命令启动程序:
<code class="language-node hljs avrasm">node timetrack_server.js</code>
最后在浏览器中访问http://127.0.0.1:3000

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der Popularität des mobilen Internets hat sich Toutiao zu einer der beliebtesten Nachrichteninformationsplattformen in meinem Land entwickelt. Viele Benutzer hoffen, mehrere Konten auf der Toutiao-Plattform zu haben, um unterschiedlichen Anforderungen gerecht zu werden. Wie eröffnet man also mehrere Toutiao-Konten? In diesem Artikel werden die Methode und der Antragsprozess zur Eröffnung mehrerer Toutiao-Konten ausführlich vorgestellt. 1. Wie eröffne ich mehrere Toutiao-Konten? Die Methode zur Eröffnung mehrerer Toutiao-Konten ist wie folgt: Auf der Toutiao-Plattform können Benutzer Konten über verschiedene Mobiltelefonnummern registrieren. Jede Mobiltelefonnummer kann nur ein Toutiao-Konto registrieren, was bedeutet, dass Benutzer mehrere Mobiltelefonnummern verwenden können, um mehrere Konten zu registrieren. 2. E-Mail-Registrierung: Verwenden Sie verschiedene E-Mail-Adressen, um ein Toutiao-Konto zu registrieren. Ähnlich wie bei der Registrierung einer Mobiltelefonnummer kann auch jede E-Mail-Adresse ein Toutiao-Konto registrieren. 3. Melden Sie sich mit einem Drittanbieterkonto an

In der heutigen schnelllebigen Gesellschaft plagen immer mehr Menschen Probleme mit der Schlafqualität. Um die Schlafqualität der Nutzer zu verbessern, erschien auf der Douyin-Plattform eine Gruppe spezieller Schlafanker. Sie interagieren mit den Nutzern über Live-Übertragungen, geben Tipps zum Einschlafen und sorgen mit entspannender Musik und Geräuschen dafür, dass die Zuschauer ruhig einschlafen können. Sind diese Schlafanker also profitabel? Dieser Artikel konzentriert sich auf dieses Problem. 1. Lohnt es sich, ein Douyin-Schlafanker zu sein? Mit Douyin-Schlafankern lassen sich tatsächlich gewisse Gewinne erzielen. Erstens können sie über die Trinkgeldfunktion im Live-Übertragungsraum Geschenke und Transfers erhalten. Diese Vorteile hängen von der Anzahl ihrer Fans und der Zufriedenheit des Publikums ab. Zweitens gewährt die Douyin-Plattform dem Moderator einen bestimmten Anteil basierend auf der Anzahl der Aufrufe, Likes, Shares und anderen Daten der Live-Übertragung. Einige Schlafanker werden es auch tun

Was tun, wenn man mit der eingestürzten Star Dome Railway durch den Schatten des Todes reist? Der Spaziergang durch den Schatten des Todes ist eine der Hauptquests [Katze unter Tauben] und stellt auch die letzte Phase der Hauptquest dar. Nachfolgend wird der Herausgeber eine detaillierte Erklärung der Mission des Spaziergangs durch den Schatten des Todes geben Die eingestürzte Star Dome Railway, für Interessierte, kommen Sie vorbei. 1. Nachdem Sie die vorherige Phase der Handlung abgeschlossen haben, werden Sie automatisch an den Ort im Bild unten weitergeleitet. Nachdem Sie mit dem 7. März gesprochen haben, müssen Sie ein Team bilden [Stone Heart Ten] Weird Placer Gold, mit vier Teams Die besten Charaktertaktiken und Finishing-Fähigkeiten sind Gruppenangriffe, und es ist am besten, einen Schild und Milch mitzubringen, wenn es schwierig ist, zu treffen Wenn Sie beim Würfeln mehr Punkte haben als das Sandgold, werden Sie nicht geschlagen. Und nach dem Ende wird die Anzahl der Finishing-Fähigkeiten vollständig wiederhergestellt. Wenn sie darunter liegt, werden Sie geschlagen, also versuchen Sie es Bringen Sie einen Gruppenangriffscharakter mit, um Punkte zu erhalten. im Chef

Was tun mit all den traurigen Geschichten über die eingestürzte Star Dome Railway? „Alle traurigen Geschichten“ ist Teil der Hauptquest „Katze unter Tauben“. Nachfolgend wird der Herausgeber die Quest „Alle traurigen Geschichten“ auf der Collapsed Star Dome-Eisenbahn ausführlich erklären ein Blick. 1. Nach Abschluss der vorherigen Stufe werden Sie automatisch zur zweiten neuen Karte [Cloak Film and Television Park] weitergeleitet. Folgen Sie der Mission von 1 [Flipperautomat] bis zu 2 Orten und folgen Sie dem dritten Charakter Handlung, gehe zu „Mit dem Kind sprechen“ auf der 4. Position und schließe das Minispiel „Speed and Nuts“ ab. Ein Minispiel ähnlich wie „Tiantian Cool Run“ ist sehr einfach. 3. Dann besteht die Tracking-Aufgabe darin, von Position 1 [Flipper] im Bild unten zu Position 2 zu fliegen. 4. Nachdem Sie die Position im Bild unten erreicht haben, müssen Sie durch das Labyrinth gehen. Nachdem Sie es von links betreten haben, bleiben Sie Gehen Sie nach rechts, um Aufgabenpunkt 15 zu erreichen.

Detaillierte Erläuterung und Optimierungsstrategie des PHP-FPM-Anforderungsverarbeitungsprozesses 1. Einführung In der Webanwendungsentwicklung ist PHP eine sehr beliebte serverseitige Skriptsprache. Und php-fpm (FastCGIProcessManager) ist ein PHP-Manager, der zur Verarbeitung von PHP-Anfragen verwendet wird. In diesem Artikel wird der Anforderungsverarbeitungsprozess von PHP-FPM ausführlich vorgestellt und erläutert, wie PHP-FPM optimiert und die Leistung von Webanwendungen verbessert werden kann. 2. PHP-FPM-Anfrageverarbeitungsprozess Wenn der Client eine Anfrage initiiert

Vue.js ist ein beliebtes JavaScript-Framework zum Erstellen von Benutzeroberflächen und Single-Page-Anwendungen. Seine prägnante Syntax, Flexibilität und leistungsstarken Funktionen machen es zur ersten Wahl vieler Entwickler. In der jüngsten Projektentwicklung haben mein Team und ich einige Erfahrungen in der Optimierung von Entwicklungsabläufen und Arbeitseffizienz gesammelt, die wir gerne mit Ihnen teilen möchten. Als Grundlage für die Entwicklung von Vue.js müssen wir zunächst das Ökosystem und die Kernkonzepte von Vue.js vollständig verstehen. Zu den Kernkonzepten von Vue.js gehören datengesteuerte Systeme und Komponentensysteme

Die Java-Sprache ist eine weit verbreitete objektorientierte Programmiersprache und wird häufig in der Softwareentwicklung auf Unternehmensebene eingesetzt. In der Java-Sprache ist der Softwareentwicklungsprozess ein sehr wichtiger Teil, der dem Entwicklungsteam dabei helfen kann, Softwareentwicklungsaufgaben effizienter zu erledigen. In diesem Artikel wird der Softwareentwicklungsprozess in der Java-Sprache vorgestellt und die in jeder Phase zu erledigenden Aufgaben erläutert. Phase der Anforderungsanalyse Der erste Schritt in der Softwareentwicklung ist die Durchführung einer Anforderungsanalyse, die darauf abzielt, die Softwareanforderungen zu ermitteln. Während der Anforderungsanalysephase in der Java-Sprache benötigt das Entwicklungsteam

In den letzten Jahren ist mit dem explosionsartigen Wachstum des Datenvolumens die Nachfrage nach Big-Data-Anwendungen gestiegen. Als beliebte Programmiersprache wird PHP häufig in der Webentwicklung eingesetzt und kann auch zum Erstellen von Big-Data-Anwendungen verwendet werden. In diesem Artikel wird der grundlegende Prozess zum Erstellen von Big-Data-Anwendungen mit PHP vorgestellt, einschließlich Datenverarbeitung, -speicherung und -analyse. 1. Datenverarbeitung Die Datenverarbeitung ist der erste Schritt bei der Anwendung von Big Data. Ihr Zweck besteht darin, Daten aus verschiedenen Quellen zu sammeln und eine Vorverarbeitung und Bereinigung für die Speicherung, Analyse und Verwendung durchzuführen. PHP kann verwendet werden
