Mohammad Jawad Barati
Mohammad Jawad Barati
خواندن ۱ دقیقه·۴ سال پیش

استفاده از تکنیک isDelete یا paranoid تو Sequelize

میخوای رکورد رو از دیتابیس حذف بکنی ولی حذف هم نکنی؟ یعنی میخوای hard delete نکنی، بلکه soft delete بکنی. راه حلش اینه:

روش isDeleted

اینه که بجای حذف کردن رکورد از تو دیتابیس بیای یه column براش تعریف بکنی. وقتی که میخوای پاکش بکنی به جای پاک کردن رکورد از تو دیتابیس مقدار isDeleted رو true بکنی.

روش paranoid

اینه که بگی:

class Post extends Model {} Post.init({ /* attributes here */ }, { sequelize, paranoid: true, // If you want to give a custom name to the deletedAt column deletedAt: 'destroyTime' }); await (await Post.findByPk(1)).destroy();

این حرکت باعث میشه که به جای حذف کردن رکورد از تو دیتابیس بیاد ستون deletedAt رو روی زمانی که دستور destroy اجرا میشه بزاره ولی رکورد تو دیتابیس باقی بمونه. حالا فرض کن واقعا میخوای رکورد حذف بشه، چکار میکنی؟

await Post.restore({ where: { id: 1 } });
نود جی‌اسsequelizenodejsparanoidisdeleted
برنانه نویس، مدرس، محقق. عاشق انیمه هستم و دنبال چالش ها جدید.
شاید از این پست‌ها خوشتان بیاید