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);
    }
});