#javascript #mysql #sequelize.js
#javascript #mysql #sequelize.js
Вопрос:
const student = db.define('student',{ //This is a model
name: {
type: datatype.STRING(40),
allowNull: false
},
age:{
type: datatype.INTEGER(2),
allowNull: false,
defaultValue: -1
}
})
const task = async()=>{
try{
await db.sync()
.then(()=> console.log("Connection Established"))
.catch((err)=> console.log(err))
//Insert a Student
for(let i=0;i<30;i ){
await student.create({
name: (['Tom','Dick','Van Dijk','Muller','Virat','Allison'])[parseInt(Math.random()*10)],
age: 10 * parseInt(Math.random()*10)
})
}
}catch(e){
console.error(e);
}
}
task();
Для выполнения этого я получаю ошибку, подобную этой:
ValidationErrorItem {
сообщение: ‘student.name не может быть null’,
тип: ‘NotNull Нарушение’,
путь: ‘имя’,
значение: null,
источник: ‘ЯДРО’,
экземпляр: [студент],
validatorKey: ‘is_null’,
validatorName: null,
validatorArgs: []
}
student — это таблица, которая является моделью, а task — это функция, которая вставляет в нее элементы.
Ответ №1:
Выходной номер parseInt(Math.random()*10)
— от 0
до <=9
. Но длина ['Tom','Dick','Van Dijk','Muller','Virat','Allison']
равна 6
. Таким образом, может быть undefined
значение, если индекс больше 5
. name
Поле в схеме sequelize имеет allowNull: false
ограничение. undefined
Значение нарушает NOT NULL
ограничение. Вот почему вы получили ошибку проверки.
Вы должны изменить его следующим образом:
parseInt(Math.random() * 6)
Он выдаст вам число от 0
до <=5
.