2017-06-12 54 views
-3

我得到一个错误推给newTask allTask​​s,与错误是TypeError: allTasks.push is not a function的Node.js和快速,data.push不是函数

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" 
    }] 
} 
+4

我们不能帮你不知道什么'data'样子。请创建一个[mcve]。 –

+3

allTask​​s是一个不是数组的对象 –

+0

'allTask​​s.tasks.push(newTask);' – Archer

回答

3

data从JSON字符串被解析后是一个对象,因此为什么.push不工作。

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

1

如果你这样做:

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

是什么显示?如果它显示了一个对象,然后尝试:

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

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

看你的编辑,我想你需要的是:

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