Keystone.js의 필수 필드, 전자 메일 필드 및 이름 필드에 대한 유효성 검사가 있습니까?Keystone.js 앱에서 몽구스 유효성 검사가 작동하지 않는 이유는 무엇입니까?
const keystone = require('keystone');
const Types = keystone.Field.Types;
const User = new keystone.List('User');
User.add({
name: { type: Types.Name, required: true, initial: true, index: true },
email: { type: Types.Email, required: true, initial: true, index: true, unique: true },
password: { type: Types.Password, initial: true, required: true },
}, 'Permissions', {
isAdmin: { type: Boolean, label: 'Can access Keystone', index: true },
});
// Provide access to Keystone
User.schema.virtual('canAccessKeystone').get(function() {
return this.isAdmin;
});
User.defaultColumns = 'name, email, isAdmin';
User.register();
그리고 단위 테스트의 일종 :
은 여기 내 사용자, 예를 들어 모델이다. 오류가 발생하지 않기 때문에 마지막 두 개가 실패합니다.
const User = keystone.list('User').model;
describe('User model', function() {
const newUser = {
name: {
first: 'Test',
last: 'Testov',
},
email: '[email protected]',
password: 'test',
};
describe('validation', function() {
it('should reject a new user without email', function (done) {
const invalidUser = Object.assign({}, newUser);
delete invalidUser.email;
new User(invalidUser).validate((err) => {
assert.equal('Path `email` is required.', err.errors.email.message);
done();
});
});
it('should reject a new user without password', function (done) {
const invalidUser = Object.assign({}, newUser);
delete invalidUser.password;
new User(invalidUser).validate((err) => {
assert.equal('Path `password` is required.', err.errors.password.message);
done();
});
});
it('should reject a new user with invalid email', function (done) {
const invalidUser = Object.assign({}, newUser);
invalidUser.email = 'roflrofl';
new User(invalidUser).validate((err) => {
console.log(err);
assert.isOk(err);
done();
});
});
it('should reject a new user without name', function (done) {
const invalidUser = Object.assign({}, newUser);
invalidUser.name = { omg: 'wtf' };
new User(invalidUser).validate((err) => {
console.log(err);
assert.isOk(err);
done();
});
});
});
});
그래서 처음 두 유닛 테스트는 긍정적 통과하지만 마지막이되지 않습니다. 유효성 검사가 효과가없는 이유는 무엇입니까?
키스톤 버전은 무엇입니까? – Creynders
@Creynders 4.0.0-beta5 –