2016-09-25 317 views
0

我覺得有點尷尬,請問請解釋部分代碼?代碼解釋nodejs expressjs mongoose

例如,我不知道這部分是什麼?我可以在哪裏閱讀更多關於它的內容

function parsePostStory(data) { 
     return { 
     name : data.name 
     } 
    } 

什麼是req.body?它是json req body嗎? 爲什麼我們要聲明空數組,爲什麼要返回它?只是爲了清晰? Story.create只是一個貓鼬的方法嗎?

的代碼的其餘部分是在這裏:

router.post('/stories', function(req, res) { 
     var validation = validatePostStory(req.body); 
     if(validation.length > 0) { 
     return res.badRequestError(validation); 
     } 
     var story = parsePostStory(req.body); 
     Story.create(story, function(err, story) { 
     if(err) { 
      console.log(err.message); 
      return res.internalServerError(); 
     } res.send(story); 
     }); 
    }); 

    function validatePostStory(data) { 
     var array = []; 
     if (!data.name || typeof data.name !== 'String') { 
     return array.push('name'); 
     } 
     return array; 
    } 

    function parsePostStory(data) { 
     return { 
     name : data.name 
     } 
    } 

對不起再次爲那種問題,並感謝一噸。

回答

2

我假設你知道請求 - 響應循環如何處理HTTP請求和客戶端 - 服務器與它的交互。如果不是,維基百科請求響應和客戶端 - 服務器(兩個鏈接限制,否則我會張貼它們作爲鏈接)

請求發送大量的信息到服務器。如果你在NodeJS中使用console.log這個請求,你會發現它包含了很多與你所需要的信息不完全相關的信息。

您正在使用Express作爲您的Web框架。在這種情況下,req.body是您從客戶端發送到服務器的信息。使用req.body將確保您不使用從客戶端傳遞到服務器的額外信息。 Req.body是你想要的代碼。 (注:Req.body本身並不支持Express v4,您必須使用類似body-parser的東西)請參閱Express docs瞭解更多詳細信息

現在,我們來分解一下這段代碼。你基本上有3個獨立的功能。我們來看看validatePostStory。

function validatePostStory(data) { 
     var array = []; 
     if (!data.name || typeof data.name !== 'String') { 
     return array.push('name'); 
     } 
     return array; 
} 

該函數是一個驗證函數。它需要一個參數 - 一個對象並返回一個數組。實際上,這是什麼做的是檢查,如果該名稱是一個字符串或沒有 - 如果不是,返回有1.下列條件檢查長度的長度的數組,並返回400,如果大於0

 if(validation.length > 0) { 
     return res.badRequestError(validation); 
     } 

我不完全確定爲什麼這需要是一個單獨的功能。看起來你可能只是這樣做而已。

if (!req.body.name || typeof req.body.name !== 'String') { 
     return res.badRequestError(validation); 
     } 

下面的函數功能基本數據轉換,這樣的MongoDB /貓鼬可以以適當的格式

function parsePostStory(data) { 
     return { 
     name : data.name 
     } 
    } 

這是同樣的它存儲的話說:

var story = {name: req.body.name} 

我會假設Story.create是一種自定義貓鼬方法。

+0

你可不可以嗎?我的讚譽沒有顯示,因爲我沒有足夠的聲望,儘管我非常感激。 – Margot

+0

我不確定這裏有什麼「你不可以」的意思,但不用客氣。 –

+0

對不起,沒有給你,有人昨天羞愧我沒有給你upvotes,我解釋說我不能。 – Margot