.push不是函数节点js

时间:2018-05-24 16:57:05

标签: javascript

朋友, 我在运行此代码时遇到问题

节点js(cmd)

var addnote = (title, body) => {
  var notes = [];
  var note = {
    title,
    body
  };

var notestring  = fs.readFileSync('notes-data.json');
notes = JSON.parse(notestring);

notes.push(note);
fs.writeFileSync('notes-data.json', JSON.stringify(notes));
}

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

首先将笔记定义为数组

var notes = [];

然后用

覆盖这个变量
notes = JSON.parse(notestring);

JSON.parse会将注释设置为等于对象而不是数组。因此它没有推送方法。如果您尝试在&notes; data.json'中使用数组。文件你可以这样访问它:

notes = JSON.parse(notestring).nameOfMyArray;

编辑:

作为一个很酷的提示,你可以重写

var notestring  = fs.readFileSync('notes-data.json');
notes = JSON.parse(notestring);

作为

var notesData = require('notes-data.json'); 

require方法会为你解析json。

答案 1 :(得分:0)

如果notes-data.json是一个对象而不是数组,则无法推送到对象。