微信小程序開發(fā)項目實戰(zhàn)(微課版)課件 項目10 新聞數(shù)據(jù)接口_第1頁
微信小程序開發(fā)項目實戰(zhàn)(微課版)課件 項目10 新聞數(shù)據(jù)接口_第2頁
微信小程序開發(fā)項目實戰(zhàn)(微課版)課件 項目10 新聞數(shù)據(jù)接口_第3頁
微信小程序開發(fā)項目實戰(zhàn)(微課版)課件 項目10 新聞數(shù)據(jù)接口_第4頁
微信小程序開發(fā)項目實戰(zhàn)(微課版)課件 項目10 新聞數(shù)據(jù)接口_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論