Menu
CoddyTech

Ghi tệp

Thuộc phần Kiến thức cơ bản về Node.js trong hành trình Node.js của Coddy. Bài học 14 trên 33.

add quên ghi chú ngay khi chương trình kết thúc.

writeFileSync(path, text) ghi một tệp, thay thế toàn bộ nội dung trong tệp. JSON.stringify chuyển một mảng thành văn bản JSON, còn null, 2 thụt lề văn bản bằng hai dấu cách để dễ đọc trong Files.

import { writeFileSync } from 'node:fs';

const scores = [12, 40];
scores.push(31);
writeFileSync('scores.json', JSON.stringify(scores, null, 2));

Tệp luôn chứa toàn bộ mảng: tải ghi chú, thêm một ghi chú, rồi ghi lại tất cả. Trong store.js, add là phương thức của đối tượng store. Bên trong một phương thức, this chính là đối tượng đó, vì vậy this.notes là mảng của store. Truyền trực tiếp mảng sẽ gây lỗi, vì tệp chứa văn bản.

challenge icon

Thử thách

Dễ

Bước này mở dự án công cụ dòng lệnh ghi chú đã chuẩn bị sẵn trong khóa học, không phải các tệp dự án của bạn trong Đọc tệp (bao gồm store.js). Phần bạn đã làm trước đó vẫn nằm trong bài học riêng. Hãy đọc các tệp được cung cấp trước khi chỉnh sửa store.js. Bản sao này chứa công cụ ghi chú có chức năng đọc tệp.

add vẫn quên ghi chú khi chương trình kết thúc. Hãy sửa để chương trình lưu mọi ghi chú vào notes.json, để list hiển thị ghi chú đó trong lần chạy tiếp theo.

  1. Trong store.js, sau khi add đưa ghi chú mới vào mảng, hãy ghi toàn bộ mảng trở lại notes.json dưới dạng JSON. Ghi mọi ghi chú, không chỉ ghi chú mới: thao tác ghi tệp sẽ thay thế toàn bộ nội dung đã có trong tệp. Thụt lề JSON bằng hai dấu cách để dễ đọc trong Files.
  2. Trong notes.js, ở nhánh add, hãy thay dòng in Adding: .... Giờ dòng này chỉ in Saved note , số thứ tự của ghi chú mới và một dấu chấm. Khi notes.json bắt đầu bằng hai ghi chú, node notes.js add Buy bread sẽ in:
    Saved note 3.
    và sau đó notes.json sẽ có nội dung:
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. Nếu chưa có notes.json, add sẽ tạo tệp này. Sau khi dùng clear, node notes.js add Call Ada sẽ in Saved note 1., rồi list sẽ hiển thị 1. Call Ada.

Thử nhé: nhập add Buy bread vào ô sau $ node notes.js rồi nhấn Enter. Bạn sẽ thấy Saved note 3.. Nhập list: Buy bread giờ là ghi chú số 3, dù đây là lần chạy mới. Mở notes.json trong Files để xem mảng đã lưu. Sau đó nhập clear để xóa tệp, rồi nhập add Call Ada: bạn sẽ thấy Saved note 1..

Tự làm thử

import { existsSync, readFileSync } from 'node:fs';

const file = 'notes.json';

const store = {
    notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;

Tất cả bài học trong Kiến thức cơ bản về Node.js

Tự luyện tập: Playground Express