I\'ve defined a unique field in my model but when I tried to test it seems like it\'s not being checked by sails because I get a Error (E_UNKNOWN) :: Encountered an un
@tvollstaedt Your reponse worked like a charm, and by the way is the most elegant way to handle "uniqueness" in sailsjs so far.
Thank you!
Here is my two cents to add custom validation messages using "sails-validation-messages":
module.exports = {
/* Custom validation types */
uniqueEmail: false,
types: {
uniqueEmail: function(value) {
return uniqueEmail;
}
},
attributes: {
firstname:{
type: 'string',
required: true,
},
lastname:{
type: 'string',
required: true,
},
email:{
type: 'email',
required: true,
unique: true,
maxLength:50,
uniqueEmail:true
},
status:{
type: 'string'
}
},
beforeValidate: function(values, cb) {
Application.findOne({email: values.email}).exec(function (err, record) {
console.log('before validation ' + !err && !record);
uniqueEmail = !err && !record;
cb();
});
},
validationMessages: {
firstname: {
required : 'First name is required',
},
lastname: {
required : 'Last name is required',
},
email: {
required : 'Email is required',
email : 'Enter valid email',
uniqueEmail: 'Email already registered'
},
}
};
Then in the controller you can handle the error like this:
module.exports = {
create:function(req, res){
var values = req.allParams();
Application.create({
email:values.email,
firstname:values.firstname,
lastname:values.lastname,
_csrf: values.csrf
})
exec(function created (err, values) {
if(err) {
console.log(err);
if(err.invalidAttributes) {
validator = require('sails-validation-messages');
err.invalidAttributes = validator(Application, err.invalidAttributes);
return res.negotiate(err);
}
}
});
}
};
Thanks