0.0.18 • Published 10 years ago
mongoose-validatefilter v0.0.18
mongoose 数据验证与过滤
相关文章
http://qianduanblog.com/3314.html
安装
npm install mongoose-validatefilter
API及说明
- 引用:
var mongooseValidateFilter = require('mongoose-validatefilter');
- 实例化
validate
:var validate = new mongooseValidateFilter.validate();
。 - 实例化
filter
:var filter = new mongooseValidateFilter.filter();
。 validate
只有一个公开方法:validate.add(字段, 规则)
。filter
只有一个公开方法:validate.add(字段, 规则)
。validate
和filter
都是按顺序来验证和过滤的。mongooseValidateFilter
的初始化:mongooseValidateFilter.validateFilter(Schema, validate, filter);
。
较完整例子
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var mongooseValidateFilter = require('../index.js');
var validate = new mongooseValidateFilter.validate();
var filter = new mongooseValidateFilter.filter();
// =============================== email =================================
validate.add('email', {
required: true,
msg: '邮箱不能为空!',
});
validate.add('email', {
type: 'string',
msg: '邮箱必须为字符串格式!',
});
validate.add('email', {
type: 'email',
msg: '邮箱格式不正确!',
});
validate.add('email', {
maxLength: 120,
msg: '邮箱长度不能超过120个字符!',
});
validate.add('email', {
callback: function(value, respond) {
value = String(value).trim().toLowerCase();
// 这里有3个判断值,分别为:
// __isCreate: 执行 cretaOne 时为真
// __isUpdate: 执行 updateOne 时为真
// __isRemove: 执行 removeOne 时为真
if (this.__isCreate) {
this.model('User').findOne({
email: value,
}, function(e, doc) {
if (e) return respond(e);
respond(!doc);
});
} else {
respond(true);
}
},
msg: '邮箱重复!',
});
filter.add('email', 'lowercase');
// =============================== nickname =================================
validate.add('nickname', {
exist: true,
type: 'string',
msg: '昵称必须为字符串格式!',
});
validate.add('nickname', {
exist: true,
trim: true,
minLength: 2,
msg: '昵称长度至少为2个字符',
});
validate.add('nickname', {
exist: true,
trim: true,
maxLength: 12,
msg: '昵称长度最多为12个字符',
});
filter.add('nickname', function(value, respond) {
if (value === undefined) value = ' 匿名用户' + Date.now()+' ';
respond(value);
});
filter.add('nickname', 'trim');
// 数据模型
var Schema = new mongoose.Schema({
// 邮箱
email: {
type: String,
},
// 昵称
nickname: {
type: String,
},
});
mongooseValidateFilter.validateFilter(Schema, validate, filter);
var Model = mongoose.model('User', Schema);
// ==========================================================
// ========================= test ===========================
// ==========================================================
// createOne
var createData = {
email: Date.now() + '@ABC.COM',
};
Model.createOne(createData, function(e, doc) {
if (e) {
console.log('错误:');
console.log(e.message);
} else {
console.log('正确。');
console.log(doc);
}
});
// updateOne
var updateData = {
email: '312312@SSSSSS.COM',
nickname: '312312',
};
Model.updateOne({
_id: '535135df03f2fecc223c2f91',
}, updateData, function(e, doc) {
if (e) {
console.log('错误:');
console.log(e.message);
} else {
console.log('正确。');
console.log(doc);
}
});
// removeOne
Model.removeOne({
_id: '535135df03f2fecc223c2f91',
}, function(e, removeLine) {
if (e) {
console.log('错误:');
console.log(e.message);
} else {
console.log('正确。');
console.log('删除了' + removeLine + '个文档');
}
});
0.0.18
10 years ago
0.0.17
10 years ago
0.0.16
10 years ago
0.0.15
10 years ago
0.0.14
10 years ago
0.0.13
10 years ago
0.0.12
10 years ago
0.0.11
10 years ago
0.0.10
10 years ago
0.0.9
10 years ago
0.0.8
10 years ago
0.0.7
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.1
10 years ago
0.0.0
10 years ago