Menu
CoddyTech

كتابة ملف

جزء من قسم أساسيات Node.js في رحلة Node.js على Coddy. الدرس 14 من 33.

تنسى add الملاحظة بمجرد انتهاء البرنامج.

تكتب writeFileSync(path, text) ملفًا، وتستبدل كل ما كان يحتويه. تحوّل JSON.stringify مصفوفةً إلى نص JSON، وتُنسّقها null, 2 بمسافتين كي تكون سهلة القراءة في Files.

import { writeFileSync } from 'node:fs';

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

يحتوي الملف دائمًا على المصفوفة بأكملها: حمّل الملاحظات، وأضف واحدة، ثم اكتبها كلها من جديد. في store.js، تكون add دالةً أسلوبيةً للكائن store. داخل الدالة الأسلوبية، يشير this إلى الكائن نفسه، لذا فإن this.notes هي مصفوفة المتجر. ويؤدي تمرير المصفوفة نفسها إلى حدوث خطأ، لأن الملف يحتوي على نص.

challenge icon

التحدي

سهل

تفتح هذه الخطوة مشروع أداة سطر الأوامر للملاحظات المُعدّة للدورة، بدلًا من ملفات مشروعك من قراءة ملف (بما فيها store.js). يبقى عملك السابق ضمن درسه الخاص. اقرأ الملفات المقدّمة قبل تعديل store.js. تحتوي هذه النسخة على أداة الملاحظات التي تقرأ الملفات.

ما زال add ينسى الملاحظة عند انتهاء البرنامج. اجعله يحفظ كل ملاحظة في notes.json، لكي يعرضها list عند التشغيل التالي.

  1. في store.js، بعد أن يضيف add الملاحظة الجديدة إلى المصفوفة، اكتب المصفوفة بأكملها مرة أخرى في notes.json بتنسيق JSON. اكتب كل الملاحظات، وليس الملاحظة الجديدة فقط: فالكتابة في ملف تستبدل كل ما كان فيه. اجعل مسافة بادئة في JSON بمقدار مسافتين، حتى يسهل قراءته في «الملفات».
  2. في notes.js، ضمن فرع add، استبدل السطر الذي يطبع Adding: .... سيطبع الآن Saved note فقط، ثم رقم الملاحظة الجديدة ونقطة. مع الملاحظتين اللتين يبدأ بهما notes.json، يطبع node notes.js add Buy bread ما يلي:
    Saved note 3.
    ثم يحتوي notes.json على ما يلي:
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. عندما لا يكون notes.json موجودًا، ينشئه add. بعد تنفيذ clear، يطبع node notes.js add Call Ada الرسالة Saved note 1.، ثم يعرض list 1. Call Ada.

جرّب ذلك: اكتب add Buy bread في المربع بعد $ node notes.js واضغط على Enter. ستظهر لك Saved note 3.. اكتب list: أصبحت Buy bread الملاحظة رقم 3، مع أن هذا تشغيل جديد. افتح notes.json في «الملفات» لرؤية المصفوفة المحفوظة. ثم اكتب clear، الذي يحذف الملف، وبعدها add Call Ada: ستظهر لك Saved note 1..

جرّب بنفسك

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;

جميع دروس أساسيات Node.js

تدرّب بنفسك: Playground لـ Express