Node.js+Express.js+Postgresql的牛刀小試

作為一個(gè)合格的Developer寫一個(gè)自己的API來滿足腦袋里天馬行空的想法是必須的荐捻,雖然并不是非常專業(yè)的后臺(tái)工程師惑畴,更不是高大上的數(shù)據(jù)庫(kù)工程師蛋欣,但我有一顆什么都想插一腳不安分的小內(nèi)心,所以這次就來分享給大家一個(gè)入門級(jí)別的后臺(tái)如贷。麻雀雖小陷虎,五臟俱全,雖然很簡(jiǎn)單杠袱,但是我們?cè)撚械氖裁炊加小?/p>


先來簡(jiǎn)單介紹一下

1)編程語(yǔ)言JavaScript尚猿,下載Nodejs,Postgresql非常簡(jiǎn)單,這里兩個(gè)鏈接供參考http://www.runoob.com/nodejs/nodejs-install-setup.html

https://www.yiibai.com/postgresql/install-postgresql.html

友情提示楣富,安裝完之后不要忘記添加環(huán)境變量凿掂,安裝成功可以來檢查一下

利用終端檢查版本號(hào)

2)Expressjs是一個(gè)輕量級(jí)Web框架,官方鏈接?https://expressjs.com/zh-cn/,使用Nodejs直接操作Postgresql需要安裝一個(gè)package纹蝴,官方鏈接https://node-postgres.com/

3)額外的package:body-parser是非常常用的一個(gè)express中間件庄萎,作用是對(duì)post請(qǐng)求的請(qǐng)求體進(jìn)行解析,參閱https://www.cnblogs.com/chyingp/p/nodejs-learning-express-body-parser.html


搭建一個(gè)簡(jiǎn)單的Express框架

先來看一下代碼

1)端口5000,設(shè)置頭文件解決萬年特別坑人的跨域問題(不安全塘安,但是適合搞事情糠涛,header還有一系列可設(shè)置參數(shù),請(qǐng)根據(jù)需求自行學(xué)習(xí)

2)bodyParser是用來解析post傳過來的json,或者form,text等content兼犯,limit如果不設(shè)置是有一個(gè)默認(rèn)值忍捡,如果你的數(shù)據(jù)量非常大超過了默認(rèn)值,服務(wù)器就會(huì)拒絕訪問

2)你的console看起來應(yīng)該是這樣切黔,表示正在監(jiān)聽

3)我們來發(fā)起一個(gè)get請(qǐng)求砸脊,渲染一個(gè)頁(yè)面,express的模板引擎是ejs纬霞,一個(gè)依賴注入的可兼容html語(yǔ)法的express專用可視化凌埂。這個(gè)有點(diǎn)復(fù)雜,我就簡(jiǎn)單展示一下诗芜,以后再慢慢來解釋侨舆。

當(dāng)發(fā)起get請(qǐng)求,渲染/views/pages/index,ejs

因?yàn)樵O(shè)置了路由所以u(píng)rl看起來是這樣

我就是這么俗

我的超級(jí)簡(jiǎn)單index.ejs

并沒有數(shù)據(jù)注入完全html語(yǔ)法

配置數(shù)據(jù)庫(kù)

1)引入package

有沒有很簡(jiǎn)單

2)Get請(qǐng)求url:localhost:5000/retrieveFeature/

假設(shè)Get傳了參數(shù)绢陌,前面引入的body-parse可以幫助我們很簡(jiǎn)單解析數(shù)據(jù)挨下,不需要人工解析url.

我這里選擇的是創(chuàng)建pool進(jìn)程池,進(jìn)程池可以重復(fù)使用,檢測(cè)出來用戶后執(zhí)行操作脐湾,操作完畢釋放資源臭笆,一定要釋放,釋放。愁铺。鹰霍。不然進(jìn)程池就滿了,所有用戶都擠不進(jìn)來啦茵乱。

3)Post請(qǐng)求url:localhost:5000/getlocation/ 茂洒;data:{location:xxx,postal:yyy}

同樣解析出傳入?yún)?shù),并定義兩個(gè)儲(chǔ)存變量

根據(jù)客戶端傳入?yún)?shù)查找數(shù)據(jù)庫(kù)對(duì)應(yīng)數(shù)據(jù)瓶竭,

執(zhí)行完操作后還是切記要釋放你的連接督勺,不然就要交通堵塞了,CPU分分鐘爆滿斤贰。


數(shù)據(jù)庫(kù)常見操作

數(shù)據(jù)四大基本操作:增刪改查

現(xiàn)在我們來create一個(gè)table,名字叫testtable,設(shè)置id自增主鍵智哀,type為bigserisel,兩個(gè)字段col_1,col_2,type均為Character varying一個(gè)自動(dòng)記錄當(dāng)前時(shí)間的時(shí)間戳

id自增
時(shí)間戳自動(dòng)記錄


1)增--INSERT

基本用法:INSERT INTO (數(shù)據(jù)表名稱)VALUES ( $1,$2..可理解為占位)RETURNING 字段1荧恍,字段2( 你想返回的字段瓷叫,也可以不返回), [實(shí)際參數(shù)1,實(shí)際參數(shù)2.送巡,..], (err,data)=>{回調(diào)}

console.log后臺(tái)顯示如下

再來看看客戶端網(wǎng)頁(yè)的情況

再來檢查一下數(shù)據(jù)是否插入成功

我多刷了幾次網(wǎng)頁(yè)摹菠,多插入了幾條數(shù)據(jù)

2)刪--DELETE

基本用法: DELETE FROM 數(shù)據(jù)表名稱? WHERE 限制條件 [RETURNING * 返回刪除記錄(可不要)]??

檢查一下數(shù)據(jù)庫(kù)

id=4的記錄以及被刪除了

3)改--UPDATE

基本語(yǔ)法:UPDATE 數(shù)據(jù)表名稱 SET 字段1=,字段2=?[WHERE 篩選條件 RETURNING 需要返回的字段](非必需)

檢查一下數(shù)據(jù)庫(kù):

最大id的對(duì)應(yīng)字段值已經(jīng)更改成功

4)查--SELECT

基本語(yǔ)法:SELECT 字段 FROM 數(shù)據(jù)表名稱 [ WHERE 篩選條件 ORDER BY 什么順序](非必需)

查找col_1='hello'的記錄有很多骗爆,我們選擇按找id倒序排列的第一個(gè)

對(duì)比一下數(shù)據(jù)庫(kù):

滿足查找條件

總結(jié)一下:

1)現(xiàn)在我們有了自己的小后臺(tái)次氨,雖然很簡(jiǎn)單但是基本功能都在,希望在此基礎(chǔ)上方便大家一起搞事情淮腾,畢竟我的api我做主

2)Express并沒有這么簡(jiǎn)單糟需,這只是很小很小的一部分屉佳,view部分以及router谷朝,ejs的網(wǎng)頁(yè)渲染還會(huì)有后續(xù)文章(我也在不斷探索學(xué)習(xí)中)

3)數(shù)據(jù)庫(kù)是要花時(shí)間專門來研究的,語(yǔ)法也是很多蠻復(fù)雜的武花,推薦看一下官方文檔http://www.postgresqltutorial.com/圆凰,會(huì)開啟另一片天地


奉獻(xiàn)了周六的一個(gè)下午,把上面的代碼每一段都完完整整的跑了一遍体箕,親測(cè)可用专钉。

我在盡量把文章寫的簡(jiǎn)單輕松一點(diǎn),編程本來就沒有那么難累铅,或許在配置和debug的過程中并沒有看起來這么容易跃须,那就多讀幾遍document,多試試娃兽,最后都能解決菇民,因?yàn)椴荒芙鉀Q的問題,壓根不會(huì)發(fā)生。

最近我一直在跟不同的計(jì)算機(jī)操作系統(tǒng)死磕第练,經(jīng)理希望我可以填補(bǔ)一下知識(shí)空白區(qū)阔馋,祝我順利進(jìn)階成功吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娇掏,一起剝皮案震驚了整個(gè)濱河市呕寝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌婴梧,老刑警劉巖下梢,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異志秃,居然都是意外死亡怔球,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門浮还,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竟坛,“玉大人,你說我怎么就攤上這事钧舌〉L溃” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵洼冻,是天一觀的道長(zhǎng)崭歧。 經(jīng)常有香客問我,道長(zhǎng)撞牢,這世上最難降的妖魔是什么率碾? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮屋彪,結(jié)果婚禮上所宰,老公的妹妹穿的比我還像新娘。我一直安慰自己畜挥,他們只是感情好仔粥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蟹但,像睡著了一般躯泰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上华糖,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天麦向,我揣著相機(jī)與錄音,去河邊找鬼客叉。 笑死诵竭,一個(gè)胖子當(dāng)著我的面吹牛景描,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秀撇,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼超棺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了呵燕?” 一聲冷哼從身側(cè)響起棠绘,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎再扭,沒想到半個(gè)月后氧苍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泛范,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年让虐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罢荡。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赡突,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出区赵,到底是詐尸還是另有隱情惭缰,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布笼才,位于F島的核電站漱受,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏骡送。R本人自食惡果不足惜昂羡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摔踱。 院中可真熱鬧虐先,春花似錦、人聲如沸昌渤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)膀息。三九已至,卻和暖如春了赵,著一層夾襖步出監(jiān)牢的瞬間潜支,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工柿汛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冗酿,地道東北人埠对。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像裁替,于是被迫代替她去往敵國(guó)和親项玛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容