Node.js和Express,data.push不是一个函数

时间:2017-06-12 11:57:43

标签: javascript node.js express

我在将newTask推送到allTask​​s时遇到错误,错误为TypeError: allTasks.push is not a function

data是使用fs

从文件中提取的JSON数据
var allTasks = JSON.parse(data);
var newTask = {
    id: Date.now(),
    title: "BAM",
    description: "BOOM",
    image: "SLAM"
};
allTasks.push(newTask);

我在解析JSON之前尝试将allTasks声明为数组但是这也不起作用。

data.json是:

{
  "tasks": [{
    "id": 1,
    "title": "something",
    "description": "do some shit",
    "image": "image URL1"
  }, {
    "id": 2,
    "title": "something2",
    "description": "do some shit2",
    "image": "image URL2"
  }]
}

2 个答案:

答案 0 :(得分:3)

从JSON字符串解析后的data是一个对象,因此.push无法正常工作。

看起来你想做的是allTasks.tasks.push(newTask);

答案 1 :(得分:1)

如果你这样做:

    console.log("typeof allTasks: " + (typeof allTasks));

它显示什么?如果它显示一个对象,请尝试:

    console.log("typeof allTasks.push: " + (typeof allTasks['push']));

那应该显示功能,如果它没有那就是你的问题,allTask​​s不是一个数组。

看看你的编辑,我认为你需要的是:

    allTasks["tasks"].push(newTask);