#mysql #node.js #sails.js #waterline
#mysql #node.js #sails.js #ватерлиния
Вопрос:
В моей пользовательской модели у меня есть:
module.exports = {
attributes: {
username: {
type: 'string',
unique: true,
required: true,
minLength: 5,
maxLength: 15,
alphanumeric: true
}
}
}
Теперь, когда я пытаюсь вставить дубликат имени пользователя, я получаю следующее сообщение:
Логическая ошибка в MySQL ORM.
{ [Ошибка: ER_DUP_ENTRY: дубликат записи ‘username’ для ключа ‘username’] код: ‘ER _DUP_ENTRY’, индекс: 0 }
Теперь мой вопрос в том, как мне перехватить эту ошибку, чтобы я мог отобразить пользовательское сообщение об ошибке пользователю? Мое создание выглядит так:
User.create({
username: "username"
}).done(function(err, data){
if(err){
//the error isn't here
}
});
Комментарии:
1.
done
не рекомендуется, поскольку его использование сбивало с толку (посколькуdone
в библиотеках promise часто есть). Используйтеexec
вместо этого.
Ответ №1:
Я не так хорошо знаком с выполненным обратным вызовом, но вы можете попробовать использовать обработчики обещаний then
User.create({
username: "username"
})
.then(function(data){
console.log("Success", data);
},function(err){
console.log("My error here", err);
});
Ответ №2:
User.create({
username: "username"
}).exec(function(err, data){
if(err){
//the error isn't here
}
// data process
});