天天看點

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

在前一篇博文中,我們簡單的分心了node,用node建立了一個檔案解析伺服器,并且在伺服器中進行了WEB尋址的操作。通過這些操作,我們已經可以把一個簡單的靜态網站搭設在伺服器之上了(javascript:void(0))。

當然,僅僅完成這樣的一個步驟還是遠遠不夠的,我們需要的不是通過node搭設一個靜态網站,而是通過node搭設一個完整的應用。那麼我們可以想想下一步操作應該做什麼了。沒錯,我們來嘗試一下資料庫的簡單操作。

在嘗試之前,我們需要來學習一個新的子產品:querystring子產品。

querystring子產品的主要用途是對字元串的處理,我們暫時先學習它的兩個方法:

前一個方法是将對象向字元串的處理,後一個方法是将字元串的處理(是不是想到了JSON?)。前一個方法的參數是待處理對象、鍵值對之間的分隔符号以及鍵值之間的分割符号;後一個方法的參數與前一個相同,隻不過處理的過程是相反的而已。

好了,我們了解了這個方法之後,便可以進行下一步的工作了。首先是對參數的捕獲,前端将資料傳遞給背景時,背景進行接收并處理,資料的傳遞似乎就這麼簡單。

往往讓人莫名痛苦的就是這些簡單的東西,比如資料如何傳遞、node如何處理、如何接收傳遞過來的參數。好的,我們一個一個來解決。

首先是資料從前端的傳遞方式,這個本不該是這裡的内容,不過說說也無所謂。前端傳遞參數有很多方法,比如表單傳遞、AJAX傳遞,但歸根結底就是兩種傳遞方法,post傳遞或者get傳遞。

兩者的差別就是get傳遞是通過url後面附加參數的傳遞方法,而post傳遞是通過表單的資料體附加送出。其他的差別與node無關,這裡就不贅述了。

首先是get方法,通過url傳遞的參數的擷取非常簡單,記得前面曾學習過一個url.parse(string).query方法嗎?這個方法擷取的就是get方法下所傳遞的參數。

然後就是對參數的處理了,還記得前面的querystring.parse方法吧,這裡我們就可以簡單的使用了:

這樣就擷取了前端get方法傳遞的name屬性的值了,方法很容易。

那麼post呢?它可不在url中啊。處理post參數,我們需要另一個子產品:formidable。

讓我們來看一下formidable的demo吧:

​​

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事
node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

讓我們簡單的分析一下這個檔案上傳:var form = new formidable.IncomingForm();一句通過簡單的引用formidable的IncomingForm方法來捕獲fields與files的資訊,之後使用util子產品(以前的sys子產品)的inspect方法來傳回post對象的結構資訊。通過這樣的方式擷取到post的對象後,便可以對對象進行操作了。

好了,現在我們分析了兩種不同的參數傳遞以及接收的方式,現在該講講如何去對資料庫進行操作了。關于資料庫我采用的是mongo資料庫,這種文法類似JS的NO-SQL資料庫無非是前端攻城濕所欣賞的一種資料庫了。至于mongo的基本操作我建議參考園内大牛一線碼農的8天mongo系列,确實是入門的一部好系列。

在這裡我們先進行做簡單的find查找,其他的我們以後再去讨論。

首先我們先安裝并引入mongo子產品,具體的行為我們這裡不再進行贅述了。對于collection的API是這樣寫的:

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事
node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

而find的api則是這樣寫的:

我們采用最簡單的方法來進行一次嘗試:

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事
node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

OK,我們通過對get方法傳遞的參數進行提取,并将之與user表中的name與pwd字段進行比較,若有該項則傳回1,否則傳回0。

我們已經寫好了find方法,但是我不想隻有一種資料庫操作,是以我需要一個類似路由的方法去尋址。方法如下:

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

exports.find_router = find_router;

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

這樣,我們就獲得了一個近乎路由表的東西,由每次傳遞參數的value項去判斷執行方法。

最後附上今天的全部代碼:

在上次的檔案中加入:

然後路由表檔案名為router:

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事
node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

最後是資料庫子產品,取名為mongord:

node.js從入門到菜鳥——node與資料庫,一段不得不說的故事
node.js從入門到菜鳥——node與資料庫,一段不得不說的故事

好的,今天所講的全部内容就到這裡了,希望對于node的新手能有一個較好的幫助,謝謝大家。