Sequelize不会为findAll和findOne方法中的无效输入引发错误

时间:2020-11-05 12:58:59

标签: mysql node.js api validation sequelize.js

我构建了一个nodejs express应用程序,该应用程序使用sequelize作为ORM来处理MySQL事务。在创建,更新和删除请求的验证中没有问题,但是,如果我尝试使用findOne和findAll方法sequelize来获取数据,似乎会转而验证数据。

我尝试使用validate编写用于序列化的隐式验证,但仍然无法正常工作。

这是代码:


  getTradeOrder: async (params) => {
    try {

// for params: {amount: '500jha'}
// tradeorder is fetched as if the amount's value was 500 

let data = await TradeOrder.findOne({ where: params }); 
// returns data:{id:2, user:"gfa7834djksfyui32", amount:500, ...}

      return { status: 200, error: null, data: data };
    } catch (err) {
      console.log(err);
      return {
        status: 400,
        error: err.message,
      };
    }
  },


  listAllTradeOrders: async (params) => {
    try {

// for params: {amount: '500jha'}
// tradeorders are fetched as if the amount's value was 500 

      let tradeOrders = await TradeOrder.findAll({
        where: params,
      });
 
// returns tradeorders:[{id:2, user:"gfa7834djksfyui32", amount:500, ...}, ...]
   
   return { status: 200, error: null, data: tradeOrders };
    } catch (err) {
      console.log(err);
      return {
        status: 400,
        error: err.message,
      };
    }
  },
};

这是模型:

const tradeOrderSchema = {
  id: DataTypes.NUMBER,
  user: DataTypes.STRING,
  amount: DataTypes.NUMBER,
  paymentMode: DataTypes.STRING,
  units: DataTypes.NUMBER,
  bankName: DataTypes.STRING
 ...

理想情况下,sequelize应该捕获无效值并为value的无效值引发错误。 如果除了validate之外,谁知道为什么没有发生或如何添加隐式验证,请告诉我。

0 个答案:

没有答案