【发布时间】:2019-03-28 06:17:07
【问题描述】:
我正在尝试根据通过另一个模型存储在数据库中的信息来验证日期字段。
当我测试 api 时,验证工作正常并抛出异常,但是,插入发生在此异常之前。也就是说,它不会阻止在数据库中的插入。我哪里出错了?
这是我的验证函数:
module.exports = (sequelize, DataTypes) => {
const Step = sequelize.define('Step', {
...
resultDate: {
type: DataTypes.DATE,
validate: {
isEven(value){
sequelize.models.Call
.findById(this.call_id)
.then(call => {
if(value >= call.endingDate) throw new Error('Error message here!');
});
...
结果如下:
Executing (default): SELECT [...] `Call`.`id` = '19c7e81e-5c23-4fd5-8623-0170deee6cd4');
Executing (default): INSERT INTO `Steps` [...];
Unhandled rejection Error message here!
显然,最初的 SELECT 是执行验证,然而,在验证退出并抛出异常之前,API 插入数据库并返回成功!
如何让模型在插入之前等待所有验证?
【问题讨论】:
标签: mysql node.js validation express sequelize.js