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が実行されるたびに配列アイテムを返します。コマンドプロンプトでファイル(ノードapp.js --title = "testing" --city = "Windsor")を実行すると、オブジェクトが1つしかない配列が得られます。アレイ。アプリを実行すると、配列内の別のアイテムを置き換える代わりに、別のオブジェクトを配列に追加するようにするにはどうすればよいですか。
[{"name":"aasdasdsdasd","city":"sdasdassddaasdasdasdsdn"}]
functions.jsは常に 'items'を' entries.json'にあるものに初期化するべきではありませんか? – nnnnnn
ファイル内の内容をまず読んで構文解析し、その配列の項目を追加してから、その配列を書き出す必要があります。 JSONを含むファイルの末尾にインクリメンタルに追加することはできません。そうした場合、有効なJSONにはなりません。あなたのコードは今のところ、新しい配列を作成して、それに1つの項目を追加し、ファイルの内容全体として書き込むだけです。したがって、配列には常に1つの項目が含まれています。以前はファイル内の配列にあったものを上書きします。 – jfriend00