如何使$ beforeValidate等到异步操作完成

时间:2020-02-17 13:23:12

标签: async-await objection.js

我希望$ beforeValidate等待异步操作完成,因为它会更新对象以使其通过验证。但是目前$ beforeValidate已完成并拒绝了该记录,因为它没有等待异步操作完成。

class Label extends Model {
 async $beforeValidate() {
  if(this.name === undefined){
    const res = await axios.get('/getSomeName')
    console.log(res.body)
    this.name = res.body
  }
 }
 static get jsonSchema () {
    return {
      type: 'object',
      required: ['name'],
      properties: {
        id: { type: 'integer' },
        name: { type: 'string' }
      }
    }
 }
}

现在,当我插入名称未定义的标签时,我可以看到在异步API调用尚未完成之前就引发了验证错误

await Label.query().insert({name: undefined})

1 个答案:

答案 0 :(得分:1)

很遗憾,$beforeValidate是同步操作。

您可以在Official Documentation上进行检查。甚至还有issue