版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目十新聞數(shù)據(jù)接口Basicdatabaseoperation任務(wù)一數(shù)據(jù)庫基本操作在小程序開發(fā)中,數(shù)據(jù)存儲和管理是不可或缺的一部分。MySQL是一個流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),而Node.js是一個基于事件驅(qū)動、非阻塞I/O的JavaScript運行時環(huán)境。通過將Node.js和MySQL結(jié)合使用,讀者可以輕松地連接到數(shù)據(jù)庫,并進行數(shù)據(jù)操作和查詢。本章節(jié)將詳細介紹如何在Node.js中連接MySQL數(shù)據(jù)庫,包括安裝依賴、創(chuàng)建數(shù)據(jù)庫連接、執(zhí)行查詢和更新操作等。項目十新聞數(shù)據(jù)接口任務(wù)描述創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表
使用Navicate創(chuàng)建數(shù)據(jù)庫名為cms,在MySQL中,創(chuàng)建數(shù)據(jù)庫必須通過SQL語句CREATEDATABASE實現(xiàn)的。CREATEDATABASEcms;創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表
在數(shù)據(jù)庫cms創(chuàng)建兩張表,新聞分類表tb_newstype和新聞信息表tb_news。在創(chuàng)建完數(shù)據(jù)庫之后,接下來的工作就是創(chuàng)建數(shù)據(jù)表。所謂創(chuàng)建數(shù)據(jù)表,指的是在已經(jīng)創(chuàng)建好的數(shù)據(jù)庫中建立新表。創(chuàng)建數(shù)據(jù)表使用的是CREATETABLE語句來完成的。CREATETABLEtb_newstype(idint(11)NOTNULLPRIMARYKEYAUTO_INCREMENT,typenamevarchar(20)CHARACTERSETutf8,statusint(11)NOTNULLDEFAULT0)創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表
創(chuàng)建數(shù)據(jù)表tb_news的語法如下所示。CREATETABLEtb_news(idint(11)NOTNULLPRIMARYKEYAUTO_INCREMENT,titlevarchar(50)COMMENT'新聞標題',typeidint(11)COMMENT'新聞類型編號',keywordsvarchar(20)COMMENT'關(guān)鍵字',summaryvarchar(255)COMMENT'新聞?wù)?,authorvarchar(20)COMMENT'新聞作者',comvarchar(50)COMMENT'新聞來源',thumbnailvarchar(100)COMMENT'縮略圖',contenttextCOMMENT'新聞內(nèi)容',addtimeint(11)COMMENT'更新時間',totalcountint(11)COMMENT'瀏覽次數(shù)')新建項目
新建
cms文件夾作為項目根目錄,并在項目根目錄中運行如下的命令,初始化包管理配置文件。npminit-y
Web應(yīng)用程序Express是一個保持最小規(guī)模的靈活的應(yīng)用程序開發(fā)框架。運行如下的命令,安裝express框架。npminstallexpress--save新建項目
在項目cms下新建app.js頁面,導(dǎo)入express模板,并監(jiān)聽3000端口,代碼實現(xiàn)如下所示。constexpress=require('express')
//導(dǎo)入express模塊constapp=express()
//創(chuàng)建express的服務(wù)器實例constbodyParser=require('body-parser')app.use(bodyParser.urlencoded({extended:true}))app.use(bodyParser.json())
//解析JSON格式app.listen(3000,()=>{
//調(diào)用app.listen方法,指定端口號并啟動web服務(wù)器
console.log('serverisrunning')})
使用node啟動app.js。nodeapp.js安裝數(shù)據(jù)庫
在cms項目下安裝MySQL,代碼如下所示。npminstallmysql連接數(shù)據(jù)庫
在使用node鏈接mysql的時候需要使用mysql模塊去創(chuàng)建連接,而mysql模塊創(chuàng)建連接有兩種方法:createConnection()與createPool(),接下來我們來說說這兩種函數(shù)的區(qū)別。連接數(shù)據(jù)庫createConnection()方法:createConnection方法用于創(chuàng)建一個單獨的MySQL連接。每次調(diào)用createConnection都會創(chuàng)建一個新的連接對象,該連接對象與數(shù)據(jù)庫建立連接,并且只能由一個客戶端使用。當連接不再需要時,需要手動調(diào)用end方法來關(guān)閉連接。適用于簡單的、低并發(fā)的應(yīng)用場景。constmysql=require('mysql');constconnection=mysql.createConnection({host:'localhost',user:'root',password:'password',database:'mydb'});connection.connect(function(err){if(err)throwerr;console.log('ConnectedtoMySQLdatabase');//執(zhí)行數(shù)據(jù)庫操作
connection.end();//關(guān)閉連接});連接數(shù)據(jù)庫createPool()方法:createPool方法用于創(chuàng)建一個連接池,連接池中包含多個
可重用的連接。連接池允許多個客戶端同時使用連接,提高了并發(fā)性能。連接池會自動管理連接的分配和釋放,可以避免頻繁地創(chuàng)建
和銷毀連接。適用于高并發(fā)的應(yīng)用場景。constmysql=require('mysql');constpool=mysql.createPool({connectionLimit:10,host:'localhost',user:'root',password:'password',database:'mydb'});pool.getConnection(function(err,connection){if(err)throwerr;console.log('ConnectedtoMySQLdatabase');
connection.release();//釋放連接回連接池});測試數(shù)據(jù)庫
測試是否安裝成功。在項目cms下新建db.js頁面,導(dǎo)入MySQL模塊并建立連接,在Node.js應(yīng)用程序中,使用require語句導(dǎo)入MySQL模塊。constmysql=require('mysql')//導(dǎo)入mysql模塊constdb=mysql.createPool({
host:'localhost',//表示連接某個服務(wù)器上的mysql數(shù)據(jù)庫
user:'root',//數(shù)據(jù)庫的用戶名(默認為root)
password:'root',//數(shù)據(jù)庫的密碼(默認為root)
database:'cms',//創(chuàng)建的本地數(shù)據(jù)庫名稱
})module.exports=db測試數(shù)據(jù)庫
在app.js頁面引入db.js文件,通過db.query方法測試數(shù)據(jù)庫是否連接成功。constdb=require('./db')db.query('select1',(err,res)=>{
if(err)returnconsole.log(err.message)
console.log(res)})感
謝
觀
看THANK項目十新聞數(shù)據(jù)接口Operationdatatable任務(wù)二操作數(shù)據(jù)表在Node.js中,使用MySQL實現(xiàn)對數(shù)據(jù)庫的增刪改查(簡稱CRUD)操作是非常常見的。掌握Node.js對MySQL的CRUD操作,可以幫助開發(fā)人員輕松創(chuàng)建和管理Web應(yīng)用程序,這對于想要在后端開發(fā)領(lǐng)域開發(fā)人員來說是必不可少的技能。項目十新聞數(shù)據(jù)接口任務(wù)描述執(zhí)行添加語句
在MySQL中增加數(shù)據(jù)使用的是MySQL的“INSERTINTO”語句。向tb_newstype表增加一條數(shù)據(jù),代碼如下所示。constdata={typename:'鮮花動態(tài)'}constsql="insertintotb_newstype(typename)values(?)"db.query(sql,[data.typename],(error,result)=>{
if(error)returnconsole.log(error.message)
if(result.affectedRows===1){
console.log('插入數(shù)據(jù)成功')
}})執(zhí)行添加語句
向表中插入數(shù)據(jù)時,如果數(shù)據(jù)對象的每個屬性和數(shù)據(jù)表的字段一一對應(yīng),則可以通過第二種方式快速插入數(shù)據(jù),SET?是一種占位符寫法,用于指定要插入的數(shù)據(jù)。代碼如下所示。constdata={typename:'鮮花動態(tài)'}constsql="insertintotb_newstypeset?"db.query(sql,data,(error,result)=>{
if(error)returnconsole.log(error.message)
if(result.affectedRows===1){
console.log('插入數(shù)據(jù)成功')
}})執(zhí)行查詢操作
連接到數(shù)據(jù)庫后,我們可以執(zhí)行SQL語句查詢語句并獲取結(jié)果,以下是一個簡單的示例,查詢tb_newstype表中的所有數(shù)據(jù),并打印出每行的內(nèi)容。constsql='select*fromtb_newstype'db.query(sql,(error,result)=>{
if(error)returnconsole.log(error.message)
console.log(result)
result.forEach((row)=>{
console.log(row)
console.log('id',row.id)
console.log('typename',row.typename)
})})執(zhí)行更新語句
除了查詢操作,還可以使用連接對象執(zhí)行各種類型的SQL更新操作,以下是一個簡單的示例,演示如何使用連接對象執(zhí)行INSERT插入操作。constdata={id:'1',typename:'最新動態(tài)'}constsql="updatetb_newstypesettypename=?whereid=?"db.query(sql,[data.typename,data.id],(error,result)=>{
if(error)returnconsole.log(error.message)
if(result.affectedRows===1){
console.log('更新數(shù)據(jù)成功')
}else{
console.log('更新失敗')
}})執(zhí)行刪除語句
以下是一個簡單的示例,演示如何使用連接對象執(zhí)行刪除DELETE插入操作。constsql="deletefromtb_newstypewhereid=?"db.query(sql,1,(error,result)=>{
if(error)returnconsole.log(error.message)
if(result.affectedRows===1){
console.log('刪除數(shù)據(jù)成功')
}else{
console.log('刪除數(shù)據(jù)失敗')
}})執(zhí)行刪除語句
在實際應(yīng)用中,為了保證數(shù)據(jù)的安全性,經(jīng)常會應(yīng)用標記刪除,模擬刪除的動作,數(shù)據(jù)還是保存在數(shù)據(jù)表。所謂的標記刪除,就是在表中設(shè)置類似于status這樣的狀態(tài)字段,來標記當前這條數(shù)據(jù)是否被刪除。constsql="updatetb_newstypesetstatus=?whereid=?"db.query(sql,[1,2],(err,results)=>{
if(err)returnconsole.log(err.message)
if(res.affectedRows===1){
console.log('更新數(shù)據(jù)成功')
}})感
謝
觀
看THANK項目十新聞數(shù)據(jù)接口Implementationofdatainterface任務(wù)三數(shù)據(jù)接口的實現(xiàn)隨著科技的不斷發(fā)展,人們獲取信息的方式也在不斷改變。在這個信息時代,新聞系統(tǒng)已經(jīng)成為人們獲取新聞資訊的主要渠道之一。本節(jié)主要講述了如何使用Node.js語言開發(fā)新聞分類數(shù)據(jù)接口。由于本章節(jié)篇幅有限,數(shù)據(jù)接口主要實現(xiàn)操作新聞分類插入和查詢操作。項目十新聞數(shù)據(jù)接口任務(wù)描述添加數(shù)據(jù)接口
首先使用Node.js實現(xiàn)添加數(shù)據(jù)接口,POST請求主要用于向服務(wù)器發(fā)送數(shù)據(jù)。POST請求的內(nèi)容全部在請求體中,下面示例獲取req.body.typename的值,該屬性主要用于post()方法時傳遞參數(shù)使用。app.post('/api/addNewsType',(req,result)=>{constdata=req.body.typenameconstsql="insertintotb_newstype(typename)values(?)"db.query(sql,data,(error,res)=>{
if(error)returnconsole.log(error.message)
result.json({
err_code:200,
message:res,
affectedRows:res.length})})})添加數(shù)據(jù)接口
添加數(shù)據(jù)的接口編寫好之后,在微信開發(fā)者工具中新建pages/index/index.js頁面,編寫
onLoad事件函數(shù)。通過wx.request()向本地HTTP服務(wù)器發(fā)送POST請求,并通過data參數(shù)傳遞了一個包含typename。代碼如下。Page({
onLoad(){
wx.request({
url:
'http://localhost:3000/api/addNewsType',
method:'post',
data:{
typename:'鮮花動態(tài)'
},
success:(res)=>{
console.log(res)
}
})
}})添加數(shù)據(jù)接口
運行結(jié)果如下圖所示。查詢數(shù)據(jù)接口
查詢數(shù)據(jù)接口使用app.get(path,callback(req,result)函數(shù),path是路徑,callback是個回調(diào)函數(shù),req是請求端發(fā)送過來的數(shù)據(jù),result是響應(yīng)段的數(shù)據(jù)。增加db.query(sql,callback)函數(shù)執(zhí)行sql語句。callback(err,res)是執(zhí)行sql后的回調(diào)函數(shù)。err是執(zhí)行sql語句錯誤時響應(yīng)的數(shù)據(jù),res是執(zhí)行數(shù)據(jù)成功響應(yīng)的結(jié)果,具體使用方法如下。app.get('/api/newsT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班小雪節(jié)氣國旗下講話稿范文(9篇)
- 開學(xué)典禮致辭(15篇)
- 初級會計經(jīng)濟法基礎(chǔ)-初級會計《經(jīng)濟法基礎(chǔ)》模擬試卷335
- RRD硅油填充術(shù)后繼發(fā)高眼壓的眼前節(jié)相關(guān)影響因素分析及中醫(yī)體質(zhì)類型研究
- 建筑與市政工程質(zhì)量安全巡查的第三方解決方案
- 【醫(yī)學(xué)課件】加強防范醫(yī)療事故(83p)
- 2025版食堂食材采購合同及食品安全培訓(xùn)服務(wù)協(xié)議3篇
- 養(yǎng)魚店銷售員工作總結(jié)
- 酒店廚房管理規(guī)范制定
- 2025版行政上訴狀補充范文:權(quán)威解讀與實戰(zhàn)演練3篇
- 銷售禮盒營銷方案
- 南潯至臨安公路(南潯至練市段)公路工程環(huán)境影響報告
- 《小英雄雨來》讀書分享會
- 初中數(shù)學(xué)校本教材(完整版)
- 重慶市銅梁區(qū)2024屆數(shù)學(xué)八上期末檢測試題含解析
- 中央導(dǎo)管相關(guān)血流感染防控
- 光的偏振和晶體光學(xué)基礎(chǔ)課件
- 中科大光學(xué)講義08光的偏振
- 黑布林英語閱讀《小婦人》-中英伴讀
- 小學(xué)美術(shù)-《神奇的肥皂粉》教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- WINCC滿足FDA規(guī)范配置說明分解
評論
0/150
提交評論