const mongoose = require('mongoose'); const bcrypt = require("bcryptjs"); // let mongodbconfig = { // client: { // url: `mongodb://rayplus_admin:rayplus1234@127.0.0.1:27017/rayplus_cms`, // options: { // autoReconnect: true, // socketTimeoutMS: 0, // keepAlive: true, // useNewUrlParser: true, // useCreateIndex: true, // reconnectTries: 30 // } // } // } let mongodbconfig = { client: { // url: `mongodb://rayplus_admin:rayplus1234@192.168.1.50:27017/rayplus`, // url: `mongodb://mongouser:mongo123456@192.168.3.69:27017/rayplus`, url: `mongodb://mongouser:mongo123456@192.168.3.68:27017/?authSource=admin`, // url: `mongodb://rayplus_admin:rayplus1234@192.168.1.25:27017/rayplus`, // url: `mongodb://rayplus_admin:rayplus1234@127.0.0.1:27017/rayplus`, options: { socketTimeoutMS: 0, keepAlive: true, useNewUrlParser: true, } } }; var Schema = mongoose.Schema; const UserSchema = new Schema({ username: { type: String, lowercase: true, trim: true, index: true }, password: { type: String, require: true }, // 密码 name: String, //用户姓名 phone: String, //手机号 email: String, // 邮箱 nickname: String, //别名 sex: { type: String, enum: ['0', '1', '2'], default: '0' }, //微信用户性别 0未知 1男性 2女性 role: { type: String, enum: ["0", "1", "2", "6", "9"], default: "2" }, //角色 0保留 1普通医生 2管理员医生 6医院最高管理员 9项目最高管理员 status: { type: String, enum: ["0", "1", "2", "4", "9"], default: "2" }, // 用户账号状态 0保留 1未激活 2已激活 4 9已删除 loginAttempts: { type: Number, default: 0 }, // 登录错误试图次数 lockUntil: { type: Number }, // 锁定账号的截至时间 meta: { createdAt: { type: Date, default: new Date() }, updatedAt: { type: Date, default: new Date() } } }); UserSchema.pre("save", function (next) { const user = this; if (!user.isModified("password")) return next(); var salt = bcrypt.genSaltSync(10); var hash = bcrypt.hashSync(user.password, salt); user.password = hash; next(); }); UserSchema.pre("save", function (next) { if (this.isNew) { // 创建时间 this.meta.createdAt = this.meta.updatedAt = new Date(); } else { this.meta.updatedAt = new Date(); } next(); }); const User = mongoose.model('User', UserSchema) // const Title = mongoose.model('Title', TitleSchema) class Init { constructor() { this.connection = null; this.User = User; this.start() } async start() { await this.connect(); //建立连接 try { await this.resetDB(); await this.addAdmin() console.log('congratulations!'); } catch (error) { console.error(error) } process.exit(); } async connect() { try { this.connection = await mongoose.connect(mongodbconfig.client.url, mongodbconfig.client.options); } catch (e) { console.console.error('db connect error') } } async addAdmin() { try { let user = new User({ username: 'rayplus_cms', password: 'rjkjCms', role: '9' }); await user.save(); } catch (e) { console.error('mongodb save error', e) } console.log('add the user completes'); } async resetDB() { //第一步删除所有表除了users表 try { await mongoose.connection.db.dropDatabase(); console.log('database drop success'); } catch (e) { console.error('mongodb error:', e) } } } new Init()