const mongoose = require('mongoose'); const logger = require('../utils/logger'); const connectDB = async () => { try { const conn = await mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true, }); logger.info(`MongoDB Connected: ${conn.connection.host}`); // 创建默认管理员用户和默认分类 await createDefaultAdmin(); await createDefaultCategories(); } catch (error) { logger.error(`Error connecting to MongoDB: ${error.message}`); process.exit(1); } }; const createDefaultAdmin = async () => { try { const User = require('../models/User'); const bcrypt = require('bcryptjs'); // 检查是否已存在管理员用户 const adminExists = await User.findOne({ username: process.env.ADMIN_USERNAME }); if (!adminExists && process.env.ADMIN_USERNAME && process.env.ADMIN_PASSWORD) { // 创建管理员用户 const hashedPassword = await bcrypt.hash(process.env.ADMIN_PASSWORD, 10); await User.create({ username: process.env.ADMIN_USERNAME, password: hashedPassword, isAdmin: true }); logger.info('Default admin user created'); } } catch (error) { logger.error(`Error creating default admin: ${error.message}`); } }; const createDefaultCategories = async () => { try { const Category = require('../models/Category'); // 检查是否已有分类 const categoriesCount = await Category.countDocuments(); if (categoriesCount === 0) { // 创建默认分类 const defaultCategories = [ { name: '通用', color: '#007AFF' }, { name: '工作', color: '#FF9500' }, { name: '学习', color: '#4CD964' }, { name: '创意', color: '#FF2D55' } ]; await Category.insertMany(defaultCategories); logger.info('Default categories created'); } } catch (error) { logger.error(`Error creating default categories: ${error.message}`); } }; module.exports = { connectDB };