node.js - MongoDB დოკუმენტების ავტომატური წაშლა 30 დღის შემდეგ
მოდელი კალენდრის აპლიკაციაზე მუშაობა ვაკეთებ React & Express.js & Mongo DB-ით. კალენდარი აქვს თვის ხედი, აჩვენებს ყოველკვირეულ მოვლენებს, და მსურს ეს მოვლენები ავტომატურად წაიშალოს 30 დღის შემდეგ.
ჩემი schema.ts:
import { Calendar } from "../types";
const calendarSchema = new mongoose.Schema<Calendar>(
{
startDate: {
type: String,
required: true,
},
endDate: {
type: String,
required: true,
},
rRule: {
type: String,
},
title: {
type: String,
required: true,
},
notes: {
type: String,
// required: true,
},
type: {
type: String,
required: true,
},
expireAt: {
type: Number,
},
},
{
timestamps: true,
}
);
calendarSchema.index({ expireAt: 1 }, { expireAfterSeconds: 70 });
export default mongoose.model<Calendar>("Calendar", calendarSchema);და მე ვქმნი "expireAt" სფეროს ჩემს ფინტ ენდზე ასე:
const payload = await createAppointment({
...appointment,
expireAt: new Date().getTime() + 80,
});ახლა ეს წაშლის დოკუმენტებს 40 - 50 წამში, ჩემი კითხვა არის როგორ შემიძლია გავხადო ეს 30 ან 31 დღემდე? წინასწარ მადლობა.
პასუხი #1
შეცვალეთ expireAt Date-ში number-ის ნაცვლად
და ინდექსის შექმნისას მიუთითეთ 0 expireAfterSeconds-ს
calendarSchema.index({ expireAt: 1 }, { expireAfterSeconds: 0 });
ახლა შეგიძლიათ განსაზღვროთ ზუსტი თარიღი, როდის დაყოვნდება თითოეული კალენდარი, წლიური პერიოდიდან წამებამდე
დამატებითი ინფორმაციისთვის, გადაამოწმეთ MongoDB-ის დოკუმენტაცია
პასუხი #2
პრობლემა არის ის, რომ თქვენ განსაზღვრეთ ვადა 70 წამის შემდეგ:
calendarSchema.index({ expireAt: 1 }, { expireAfterSeconds: 70 });
70-ის ნაცვლად expireAfterSeconds-ში უბრალოდ ჩაწერეთ სასურველი მნიშვნელობა, მაგალითად 7 დღისათვის:
60 * 60 * 24 * 7 = 604800
