115 lines
2.1 KiB
JavaScript
Executable File
115 lines
2.1 KiB
JavaScript
Executable File
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.countDocuments({
|
|
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.countDocuments();
|
|
}
|
|
|
|
findByEmail(email) {
|
|
return this.model.findOne({ email: email });
|
|
}
|
|
|
|
findById(id) {
|
|
return this.model.findOne({
|
|
_id: id
|
|
});
|
|
}
|
|
|
|
del(id) {
|
|
return this.model.remove({
|
|
_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;
|