yapi/server/models/user.js

96 lines
2.2 KiB
JavaScript

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,
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').exec(); //显示id name email role
}
findByUids(uids) {
return this.model.find({
_id: { $in: uids }
}).select('_id username email role type add_time up_time').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').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;