我构建了一个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之外,谁知道为什么没有发生或如何添加隐式验证,请告诉我。