mongoose-validatefilter
v0.0.18
Published
mongoose 数据验证与过滤
Readme
mongoose 数据验证与过滤

相关文章
http://qianduanblog.com/3314.html
安装
npm install mongoose-validatefilterAPI及说明
- 引用:
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: '[email protected]',
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 + '个文档');
}
});