【发布时间】:2017-12-13 16:12:03
【问题描述】:
functions.js:
const fs = require("fs");
var items = [];
var addItem = (name, city) => {
var item = {
name,
city
};
console.log(items)
items.push(item)
fs.writeFileSync("entries.json", JSON.stringify(items))
};
module.exports = {
addItem
};
app.js:
const yargs = require("yargs");
const request = require("request");
const ext = require("./functions.js");
var argv = yargs
.options({
name:{
demand:true,
string:true,
describe:"Enter your name. "
},
city:{
demand:true,
string:true,
describe:"Enter the city you live in. "
}
})
.help()
.argv
var inputName = argv.name;
var inputCity = argv.city;
ext.addItem(inputName, inputCity);
我要做的是在每次运行其他文件 app.js 时将一个新对象推送到数组项中。当我在命令提示符下运行文件 (node app.js --title="testing" --city="Windsor") 时,我得到的数组只有一个对象,我发现它一直在替换大批。如何获取它,以便在应用程序运行时,它将另一个对象添加到数组中,而不是替换数组中的另一个项目。
[{"name":"aasdasdsdasd","city":"sdasdassddaasdasdasdsdn"}]
【问题讨论】:
-
不应该 functions.js 将
items初始化为entries.json中的任何内容,而不是始终初始化为空数组? -
您必须首先读取文件中的内容,对其进行解析,然后添加该数组的项目,然后将该数组写出。您不能增量添加到包含 JSON 的文件的末尾 - 如果您这样做,它将不是有效的 JSON。就您现在的代码而言,您只是在创建一个新数组,向其中添加一项并将其作为文件的全部内容写入,因此数组始终只包含一项也就不足为奇了。您总是会覆盖文件中数组中以前的内容。
标签: javascript arrays node.js