快递js + Sequelize和钩子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快递js + Sequelize和钩子相关的知识,希望对你有一定的参考价值。

我正在开发一个应用程序,我需要在创建对象时进行额外的验证。

我尝试使用hooks和beforeValidate函数,但它不起作用。如果提交的值大于db中的值(基于自定义查询的计算值),我试图验证失败。

Transaction.beforeValidate(function(transaction, options) {

    sequelize.query(
      'SELECT SUM(IF(type = "buy", number_of_shares, number_of_shares * -1)) as remaining FROM transactions WHERE account_id = $account_id',
      { 
        bind: { 
          account_id: req.body.account_id 
        }, 
        type: sequelize.QueryTypes.SELECT 
      }
    ).then(result => {
      if (req.body.type == "sell" && result.remaining < req.body.number_of_shares) {
        throw error('Number of remaining shares is less than what you are trying to sell.') // psudeo code
      }
    }).then(result => {
      return sequelize.Promise.resolve(user);
    })
  })
答案

你在return之前错过了一个sequelize.query(

return sequelize.query(

以上是关于快递js + Sequelize和钩子的主要内容,如果未能解决你的问题,请参考以下文章

Node JS中的权限

Sequelize beforeConnect 钩子与 sequelize-typescript 未运行

Sequelize:你可以使用钩子为查询添加评论吗?

Node.js,ORM框架,Sequelize,入门及增、删、改、查代码案例

Sequelize查询执行顺序错误

Sequelize.js 外键