express.js 服务器 运行 在 nodemon 上的工作方式与在 node 上的不同
express.js server running on nodemon working differently than one on node
我的 server.js 看起来像这样:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var ingredients = [
{
id:"i1",
text:'eggs'
},
{
id:'i2',
text:'milk'
},
{
id:'i3',
text:'bacon'
},
{
id:'i4',
text:'frog legs'
}
];
app.get('/',function (request,response){
response.send(ingredients);
});
app.post('/',function(request,response){
var ingredient = request.body;
if( !ingredient || ingredient.text===""){
response.status(500).send({error: "Your ingredient must have some text"});
}else {
ingredients.push(ingredient);
response.status(200).send(ingredients);
}
});
app.listen(3000, function () {
/* body... */
console.log('My first API running successfully on port 3000');
});
所以当我 运行 服务器使用 节点 server.js 并发送 POST请求正文为
{"id":"i5","text":"cherries"}
它将对象推送到 ingredients 数组。但是当我 运行 使用 nodemon server.js 相同的文件时,它会推送一个空对象。此外,如果 "text" 属性 留空(也在 nodemon 场景中),它不会 return 错误消息。社区中的任何人都可以帮助我理解为什么会发生这种情况吗?
P.S。 - 我使用 POSTMAN.
测试了请求
你在数组中输入空白 object 的原因是你没有在 header 上传递 application/json
。
而且你的文本校验条件也不对。
var ingredient = request.body;
if( !ingredient || ingredient.text===""){
//当您将 request.body
分配给 ingredient
时,如果没有数据,它会分配 {}
给它,当您检查 if
条件时 !ingredient
不是空白它有 {}
并且在下一个条件 ingredient.text
return undefined
不等于 ""
app.post('/',function(request,response){
console.log("post");
var ingredient = request.body;
if (!('text' in ingredient)){
// if(ingredient.text){
response.status(500).send({error: "Your ingredient must have some text"});
}else {
console.log("post1",ingredient);
ingredients.push(ingredient);
response.status(200).send(ingredients);
}
});
我的 server.js 看起来像这样:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var ingredients = [
{
id:"i1",
text:'eggs'
},
{
id:'i2',
text:'milk'
},
{
id:'i3',
text:'bacon'
},
{
id:'i4',
text:'frog legs'
}
];
app.get('/',function (request,response){
response.send(ingredients);
});
app.post('/',function(request,response){
var ingredient = request.body;
if( !ingredient || ingredient.text===""){
response.status(500).send({error: "Your ingredient must have some text"});
}else {
ingredients.push(ingredient);
response.status(200).send(ingredients);
}
});
app.listen(3000, function () {
/* body... */
console.log('My first API running successfully on port 3000');
});
所以当我 运行 服务器使用 节点 server.js 并发送 POST请求正文为
{"id":"i5","text":"cherries"}
它将对象推送到 ingredients 数组。但是当我 运行 使用 nodemon server.js 相同的文件时,它会推送一个空对象。此外,如果 "text" 属性 留空(也在 nodemon 场景中),它不会 return 错误消息。社区中的任何人都可以帮助我理解为什么会发生这种情况吗?
P.S。 - 我使用 POSTMAN.
测试了请求你在数组中输入空白 object 的原因是你没有在 header 上传递 application/json
。
而且你的文本校验条件也不对。
var ingredient = request.body;
if( !ingredient || ingredient.text===""){
//当您将 request.body
分配给 ingredient
时,如果没有数据,它会分配 {}
给它,当您检查 if
条件时 !ingredient
不是空白它有 {}
并且在下一个条件 ingredient.text
return undefined
不等于 ""
app.post('/',function(request,response){
console.log("post");
var ingredient = request.body;
if (!('text' in ingredient)){
// if(ingredient.text){
response.status(500).send({error: "Your ingredient must have some text"});
}else {
console.log("post1",ingredient);
ingredients.push(ingredient);
response.status(200).send(ingredients);
}
});