首页 > 解决方案 > 如何从 sequelize + node.js 中的多个模型中获取验证错误

问题描述

我正在尝试创建包含相关模型的模型。然后验证失败,我只收到 1 个错误,而不是所有验证失败。例如是

[
    {
        "loads": {
            "name": "Name is required"
        }
    }
]

我怎样才能让所有相关模型的所有验证都失败?喜欢

[
    {
        "model1": {
            "name": "Name is required"
        }
    },
    {
        "model2": {
            "name": "Name is required"
        }
    },
    {
        "model3": {
            "name": "Name is required"
        }
    },
    {
        "etc": {
            "name": "Name is required"
        }
    }
]

这是我的路由器功能:

router.post('/', [checkAuth], async (req, res) => {
    let {
        name="",
        weight="",
        volume="",
        packing_type="",
        price_request="",
        note="",
        visible="",
        Origin={city_id: '', date_from: ''}, // Origin object
        Destination={city_id: ''}, // Destination object
    } = req.body;


    result = await db.transaction((t) => {
        return LoadModel.create({
            user_id: user_id,
            name: name,
            weight: weight,
            volume: volume,
            packing_type: packing_type,
            price_request: price_request,
            note: note,
            visible: visible,
            origin: Origin,
            destination: Destination,
        },{ include: [
            OriginModel, DestinationModel
        ], transaction: t})
    }).then(result => {
        res.status(201).json(result);
    }).catch(Sequelize.ValidationError, (err) => {
      res.status(400).json(err.errors.map(item => {
            return {
                [item.instance._modelOptions.tableName]: {[item.path]: item.message}
            };
        })); // How can i get all validation errors for returning it?
    }).catch(badError => {
        res.status(500).json(badError);
    })
    validateErrors.catch(err => {
        console.log(err);
    }) 
});

也许有一种方法可以将验证错误从承诺返回到全局对象?或者是其他东西...

标签: node.jspostgresqlexpresstransactionssequelize.js

解决方案


推荐阅读