ファイルの読み込み
CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 10/24。
毎回の実行で同じ3つのメモが表示されるのは、それらがメモリ内にしか存在しないためです。
node:fsのreadFileSync(path, 'utf8')は、ファイルを文字列として読み込みます。メモファイルにはJSONが格納されます。これは、JavaScriptの配列やオブジェクトのように記述されたデータ形式であり、JSON.parseはそのテキストを配列に変換します。存在しないファイルを読み込むとENOENTエラーが発生するため、まずexistsSyncで確認します。
import { existsSync, readFileSync } from 'node:fs';
const scores = existsSync('scores.json')
? JSON.parse(readFileSync('scores.json', 'utf8'))
: [];
console.log(scores.length);'utf8'を指定しないと、文字列ではなくBuffer(ファイルの生のバイト列)が返されます。
チャレンジ
簡単store.jsは固定リストの代わりにnotes.jsonからメモを読み込みます。notes.jsonがない場合、ストアは空の状態で始まり、listはNo notes yetと表示します。
node notes.js list を実行します。次に、ファイルを削除する node notes.js clear を実行し、もう一度 list を実行します。「Reset files」を実行すると、ファイルが元に戻ります。
自分で試してみよう
// このリストの代わりに notes.json からメモを読み込む。
const store = {
notes: ['Buy milk', 'Call Ada', 'Water the plants'],
add(text) {
this.notes.push(text);
return this.notes.length;
},
};
export default store;
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。