37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
// MongoDB 初始化脚本
|
|
// Docker 首次启动时自动执行,创建集合、索引和默认管理员账号
|
|
|
|
db = db.getSiblingDB('draw-a-cat')
|
|
|
|
// 创建集合
|
|
db.createCollection('cats')
|
|
db.createCollection('users')
|
|
db.createCollection('votes')
|
|
db.createCollection('favorites')
|
|
db.createCollection('admins')
|
|
db.createCollection('review_logs')
|
|
|
|
// 创建索引
|
|
db.users.createIndex({ openId: 1 }, { unique: true })
|
|
db.votes.createIndex({ catId: 1, userId: 1 }, { unique: true })
|
|
db.favorites.createIndex({ catId: 1, userId: 1 }, { unique: true })
|
|
db.cats.createIndex({ createdAt: -1 })
|
|
db.cats.createIndex({ likes: -1 })
|
|
db.cats.createIndex({ authorId: 1 })
|
|
db.cats.createIndex({ status: 1 })
|
|
db.cats.createIndex({ status: 1, createdAt: -1 })
|
|
db.cats.createIndex({ status: 1, likes: -1 })
|
|
db.admins.createIndex({ username: 1 }, { unique: true })
|
|
|
|
// 插入默认超级管理员
|
|
// 密码: admin123 (bcryptjs hash, 10 rounds)
|
|
db.admins.insertOne({
|
|
username: 'admin',
|
|
password: '$2a$10$9OwHouTM6DHixV/..dJcDOMqPY.wH58OarKlkHbBivaUhrkD8y.6e',
|
|
role: 'super_admin',
|
|
createdAt: new Date(),
|
|
updatedAt: new Date()
|
|
})
|
|
|
|
print('数据库初始化完成: 集合、索引已创建,默认管理员账号 admin/admin123')
|