Хук обратной петли с асинхронными / обещаниями

Я пытаюсь создать асинхронный хук "перед сохранением" для Fireloop.io и Loopback 3, но сталкиваюсь с двумя проблемами: я не могу найти пример кода для асинхронных хуков И мой импорт Promise не удается скомпилировать. Вот моя попытка.

Может кто-нибудь предложить мне рабочий пример? Спасибо!

import * as Promise from 'bluebird';  

import { Model } from '@mean-expert/model';

/**
 * @module MyModel
 * @description
 **/
@Model({
  hooks: {
    beforeSave: { name: 'before save', type: 'operation' }
  },  
  remotes: {
    myRemote: {
      returns: { arg: 'result', type: 'array' },
      http: { path: '/my-remote', verb: 'get' }
    }
  }
})

class MyModel {
  constructor(public model: any) {
  }

  async beforeSave(ctx: any): Promise<void> {
    console.log('Invite.beforeSave: started');
    return new Promise<void>((resolve, reject) => {
      Model.validatesDateOf('expires');  /// will validation fail with promises?
      resolve();          // OK          /// 
      reject("my error"); // FAIL        /// Will this propergate to Loopback ?
    });    
  }
}

module.exports = MyModel;

Вот мой tsconfig.json с v2.5.3

    {
        "compilerOptions": {
            "module": "commonjs",
            "noImplicitAny": true,
            "removeComments": true,
            "preserveConstEnums": true,
            "sourceMap": true,
            "experimentalDecorators": true,
            "moduleResolution": "node",
            "typeRoots": [
                "./node_modules/@types"
            ],
            "types": [
                "node",
                "mocha",
                "chai",
                "bluebird"
            ]
        }
    }

0 ответов

Другие вопросы по тегам