0.0.18 • Published 11 years ago
mongoose-validatefilter v0.0.18
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: '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
11 years ago
0.0.17
12 years ago
0.0.16
12 years ago
0.0.15
12 years ago
0.0.14
12 years ago
0.0.13
12 years ago
0.0.12
12 years ago
0.0.11
12 years ago
0.0.10
12 years ago
0.0.9
12 years ago
0.0.8
12 years ago
0.0.7
12 years ago
0.0.6
12 years ago
0.0.5
12 years ago
0.0.4
12 years ago
0.0.3
12 years ago
0.0.1
12 years ago
0.0.0
12 years ago