我觉得有点尴尬,请你解释部分代码吗?
例如,我不知道,这部分是什么?我在哪里可以阅读更多相关信息?
function parsePostStory(data) {
return {
name : data.name
}
}
什么是req.body?这是json req的身体吗? 为什么我们声明空数组,为什么要返回它?只是为了清晰起见? 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
}
}
再次对这个问题感到抱歉,并感谢你。
答案 0 :(得分:2)
我假设你知道请求 - 响应周期如何处理HTTP请求以及客户端 - 服务器与它的交互。如果没有,维基百科请求 - 响应和客户端 - 服务器(两个链接限制,否则我会将它们发布为链接)
请求会向服务器发送大量信息。如果您在NodeJS中对console.log中的请求进行console.log,您将看到它包含的许多信息与您所需的信息并不完全相关。
您使用Express作为您的网络框架。在这种情况下,req.body是您从客户端发送到服务器的信息。使用req.body将确保您不使用从客户端传递到服务器的额外信息。 Req.body是你想要的代码。 (注意:Express v4原生支持Req.body,您必须使用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 / mongoose可以以正确的格式存储它
function parsePostStory(data) {
return {
name : data.name
}
}
与说法相同:
var story = {name: req.body.name}
我认为Story.create是一种自定义的mongoose方法,是的。