添加有效性规则
- 有效性规则可以避免我们向数据库中添加无用的信息:
- 有效的用户必须有名字
- 名字不少于3个字符。
打开user.js文件:
const UserSchema = new Schema({
name: String,
postCount: Number
});
添加规则:有效的用户必须有名字
const UserSchema = new Schema({
name: {
type: String,
required: [true, 'Name is required.'] //向未命名的用户传递信息
},
postCount: Number
});
规则1的有效性测试
在test中添加validation_test.js文件:
const assert = require('assert');
const User = require('../src/user');
describe('Validation records', () => {
it('requires a user name', () => {
const user = new User({name : undefined});
const validationResult = user.validateSync(); //validateSync()函数在测试有效性时,会同时返回有效性信息
// user.validate((validationResult) => {//validate()不会返回有效性信息,所以我们需要一个回调来传递有效性信息
// });
console.log(validationResult);
});
});
返回的有效信息可以看做一个object,所以我们要获取我们需要的信息从而使用断言:
const assert = require('assert');
const User = require('../src/user');
describe('Validation records', () => {
it('requires a user name', (done) => {
const user = new User({name : undefined});
const validationResult = user.validateSync(); //validateSync()函数在测试有效性时,会同时返回有效性信息
// user.validate((validationResult) => {//validate()不会返回有效性信息,所以我们需要一个回调来传递有效性信息
// });
//console.log(validationResult);
const message = validationResult.errors.name.message;
console.log(message);
assert(message === 'Name is required.');
done();
});
});
使用validate添加规则:名字不少于3个字符
打开user.js文件:
validate: {
//把validator对象赋值成一个函数,函数参数为name属性
validator: (name) => name.length > 2,
//当validator检测到错误的时候,返回message对象
message: 'Name must be longer than two charecters.'
},
规则2的有效性测试
在validation_test.js里面添加新的测试:
it('requires a user\'s name longer then two characters', (done) => {
const user = new User({name : 'Al'});
const validationResult = user.validateSync();
const {message} = validationResult.errors.name;
console.log(message);
assert(message === 'Name must be longer than two charecters.');
done();
});
网友评论