const baseModel = require('./base.js'); class userModel extends baseModel { getName() { return 'user'; } getSchema() { return { username: { type: String, required: true }, password: { type: String, required: true }, email: { type: String, required: true }, passsalt: String, study: {type: Boolean, default: false}, role: String, add_time: Number, up_time: Number, type: {type: String, enum: ['site', 'third'], default: "site"} //site用户是网站注册用户, third是第三方登录过来的用户 }; } save(data) { let user = new this.model(data); return user.save(); } checkRepeat(email) { return this.model.count({ email: email }); } list() { return this.model.find().select('_id username email role type add_time up_time study').exec(); //显示id name email role } findByUids(uids) { return this.model.find({ _id: { $in: uids } }).select('_id username email role type add_time up_time study').exec(); } listWithPaging(page, limit) { page = parseInt(page); limit = parseInt(limit); return this.model.find().sort({ _id: -1 }).skip((page - 1) * limit).limit(limit).select('_id username email role type add_time up_time study').exec(); } listCount() { return this.model.count(); } findByEmail(email) { return this.model.findOne({ email: email }); } findById(id) { return this.model.findOne({ _id: id }); } del(id) { return this.model.deleteOne({ _id: id }); } update(id, data) { return this.model.update({ _id: id }, data); } search(keyword) { return this.model.find({ $or: [ { email: new RegExp(keyword, 'i') }, { username: new RegExp(keyword, 'i') } ] }, { passsalt: 0, password: 0 }).limit(10); } } module.exports = userModel;