Spaces:
Sleeping
Sleeping
File size: 1,160 Bytes
e8c33fa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | require('dotenv').config({ path: require('path').resolve(__dirname, '../.env') });
const mongoose = require('mongoose');
const MONGO_URI = process.env.MONGO_URI;
if (!MONGO_URI) throw new Error('MONGO_URI not set');
const parseDate = (val) => {
if (!val) return null;
if (val instanceof Date) return val;
const d = new Date(val);
return Number.isNaN(d.getTime()) ? null : d;
};
async function migrate() {
await mongoose.connect(MONGO_URI);
console.log('Connected to MongoDB');
const Announcement = require('../models/Announcement');
const Achievement = require('../models/Achievement');
for (const Model of [Announcement, Achievement]) {
const docs = await Model.find({ date: { $type: 'string' } }).lean();
console.log(`${Model.modelName}: found ${docs.length} docs with string dates`);
for (const doc of docs) {
const parsed = parseDate(doc.date);
await Model.updateOne({ _id: doc._id }, { $set: { date: parsed } });
}
console.log(`${Model.modelName}: migration complete`);
}
await mongoose.disconnect();
console.log('Done');
}
migrate().catch((err) => { console.error(err); process.exit(1); });
|