NodeJS:为什么数组不能跨不同的命令持久化?

时间:2018-10-02 17:33:21

标签: node.js

我正在按照Andrew Mead的“学习NodeJS开发”中的教程创建一个notes应用程序。

我有两个.js文件,如下所示:

  

app.js:

const fs = require('fs');
const notes = require('./notes');
const yargs = require('yargs');

const argv = yargs.argv;

// fs.writeFileSync('notes-data.json', JSON.stringify(notes.addNote(argv.title, argv.body)));
var data = notes.addNote(argv.title, argv.body);
console.log(argv.title, '*****', argv.body);

var notesString = fs.readFileSync('./notes-data.json');
var myNotes = JSON.parse(notesString);

console.log(myNotes);
  

notes.js:

console.log('Starting notes.js');

const fs = require('fs');

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

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

module.exports = {
    addNote
};

现在,按照书中的内容,当我运行两个命令时:

  

节点app.js添加--title = oldSecret1 --body =“哈哈”
  节点app.js添加--title = oldSecret2 --body =“ Haha”

然后,notes数组应该有两个条目-一个用于oldSecret1,另一个用于oldSecret2。但是,在我的情况下,数组只有一个条目-我当前正在运行的命令的条目(oldSecret1oldSecret2)。我先前运行的oldSecret1的数据未保留,即,当我运行oldSecret2的命令时,该数据不在数组中。

我确定我犯了一些愚蠢的错误。有人可以指出吗?我不确定该问题是否与持久性有关,因为我认为这两个命令是不同“会话”的一部分?

谢谢!

编辑:

请注意,两个建议的选项-按照C ++ / Java范例将notes[]的声明移出函数之外不起作用。此外,使用try-catch块也不起作用。我认为错误notes.push(note) is not a function是可以理解的,因为我认为require()返回了一个我们不能直接push无法访问的对象。

将不胜感激。谢谢!

0 个答案:

没有答案