我收到此错误“ TypeError:Ingredients.push不是函数”

时间:2020-06-12 03:21:47

标签: json

我仍在学习JSON GET和POST,并且正在使用Insomnia Designer作为我的开发工具。

这是我的代码:

var ingredients = [
  {
      "id": "232323",
      "text": "Eggs"
  },
  {
      "id": "121212",
      "text": "Milk"
  },
  {
      "id": "45464",
      "text": "Bacon"
  },
  {
      "id": "67686",
      "text": "Onion"
  } 
];

app.post('/', function (request, response) {
  var ingredients = request.body;
  if (!ingredients || ingredients.text == "") {
    response.status(500).send({error: "Your ingredient must have a text"});
  } else {
    ingredients.push(ingredients);
    response.status(200).send(ingredients);
  }
});

当我尝试执行代码时,它在第'ingredients.push(ingredients);'行显示了错误

我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:1)

request.body可以是一个对象。您需要这样指定。

var ingredients = request.body.ingredients;

尝试一下:

app.post('/', function (request, response) {
var ingredients = request.body.ingredients;

if (!ingredients || ingredients.text == "") {
        response.status(500).send({error: "Your ingredient must have a text"});
} else {
   ingredients.push(ingredients);
    response.status(200).send(ingredients);
}

希望这会有所帮助。

答案 1 :(得分:1)

我认为是由于您使用了相同的名称,请尝试以下代码:

app.post('/', function (request, response) {
  var _ingredients = request.body;
  if (!ingredients || ingredients.text == "") {
    response.status(500).send({error: "Your ingredient must have a text"});
  } else {
    _ingredients.push(ingredients);
    response.status(200).send(_ingredients);
  }
});

使用下划线('_')区分 local和global 变量始终是一个好习惯。