Mongoose学习全面理解(推荐)

2020-06-17 06:57:26易采站长站整理

跟更新数据一样,也有三种方法给我们删除数据:


remove();
findOneAndRemove();
findByIdAndRemove();

remove方法有两种使用方式,一种是用在模型上,另一种是用在模型实例上,例如:


User.remove({ name : /Simon/ } , function (err){
if (!err){
// 删除名字中包含simon的所有用户
}
});

User.findOne({ email : 'simon@theholmesoffice.com'},function (err,user){
if (!err){
user.remove( function(err){
// 删除匹配到该邮箱的第一个用户
});
}
});

接下来看一下findOneAndRemove方法:


User.findOneAndRemove({name : /Simon/},{sort : 'lastLogin', select : 'name email'},function (err, user){
if (!err) {
console.log(user.name + " removed");
// Simon Holmes removed
};
});

另外一个findByIdAndRemove方法则是如出一辙的。


User.findByIdAndRemove(req.body._id,function (err, user) {
if(err){
console.log(err);
return;
}
console.log("User deleted:", user);
});

四、数据验证

1.mongoose内置数据验证

在mongoose中,数据验证这一层是放在schema中的,mongoose已经帮我们做了很多内置的数据验证,有一些验证是针对某些数据类型的,也有一些是针对所有数据类型的。

能够作用在所有数据类型上的验证有require,意思就是该字段是否是必须的,例如:


email: { type: String, unique: true, required: true }

上面的代码就定义了一个email是必须的schema.

下面再分别介绍一下mongoose内置的一些数据验证类型。

数字类型schemasType,对于Number类型的数据,具有min,max提供用来界定最大最小值:


var teenSchema = new Schema({
age : {type: Number, min: 13, max:19}
});

字符串类型SchemasType,对于该类型数据,mongoose提供了两种验证器:

match:可使用正则表达式来匹配字符串是否符合该正则表达式的规则
enum:枚举出字符串可使用的一些值

分别举例如下:


var weekdaySchema = new Schema({
day : {type: String, match: /^(mon|tues|wednes|thurs|fri)day$/i}
});

var weekdays = ['monday', 'tuesday', 'wednesday', 'thursday','friday'];
var weekdaySchema = new Schema({
day : {type: String, enum: weekdays}
});

在我们进行一些数据库的时候,如果有错误,可能会返回一些错误信息,这些信息封装在一个对象中,该对象的数据格式大致如下: