2016-09-25 168 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