刘常宁

正在加载内容与界面动效

2026最快速开发自用方案

2026/01/113 次浏览0 个赞

技术栈:

  • nuxt4 + qorder

数据库初始化脚本


/**
 * 初始化默认用户脚本
 * 使用方法: npx tsx scripts/init-user.ts
 */

import mongoose from "mongoose";
import bcrypt from "bcryptjs";
import dotenv from "dotenv";

// 加载环境变量
dotenv.config();

// 用户 Schema 定义
const UserSchema = new mongoose.Schema({
  nickname: { type: String, required: true },
  cover: { type: String, required: true },
  mobile: { type: String, required: true },
  pwd: { type: String, required: true }
}, { 
  versionKey: false,
  timestamps: true
});

const User = mongoose.models.User || mongoose.model("User", UserSchema);

// 默认用户配置
const DEFAULT_USER = {
  nickname: "刘宁",
  cover: "https://via.placeholder.com/150",
  mobile: "13800138000",
  password: "123456"  // 明文密码,脚本会自动加密
};

async function initDefaultUser() {
  const uri = process.env.MONGODB_URI;
  const dbName = process.env.MONGODB_DB || "nuxt_blog";
  
  if (!uri) {
    console.error("❌ 错误: 请在 .env 文件中设置 MONGODB_URI");
    process.exit(1);
  }

  console.log("🔗 正在连接数据库...");
  
  try {
    await mongoose.connect(uri, { dbName });
    console.log("✅ 数据库连接成功");
    
    // 检查用户是否已存在
    const existingUser = await User.findOne({ mobile: DEFAULT_USER.mobile });
    
    if (existingUser) {
      console.log(`⚠️  用户 ${DEFAULT_USER.mobile} 已存在,跳过创建`);
      console.log(`   昵称: ${existingUser.nickname}`);
    } else {
      // 加密密码
      const hashedPassword = await bcrypt.hash(DEFAULT_USER.password, 10);
      
      // 创建用户
      const newUser = await User.create({
        nickname: DEFAULT_USER.nickname,
        cover: DEFAULT_USER.cover,
        mobile: DEFAULT_USER.mobile,
        pwd: hashedPassword
      });
      
      console.log("✅ 默认用户创建成功:");
      console.log(`   昵称: ${newUser.nickname}`);
      console.log(`   手机号: ${newUser.mobile}`);
      console.log(`   密码: ${DEFAULT_USER.password}`);
    }
    
  } catch (error: any) {
    console.error("❌ 初始化失败:", error.message);
    process.exit(1);
  } finally {
    await mongoose.disconnect();
    console.log("🔌 数据库连接已关闭");
  }
}

// 运行初始化
initDefaultUser();