Mon goose хуки выполняются дважды в NestJS - PullRequest
0 голосов
/ 19 июня 2020

Я шифрую конфиденциальные данные с помощью библиотеки @aws-crypto/client-node. Я создал службу шифрования, следуя следующему примеру из aws docs с некоторыми изменениями, поскольку мне нужно хранить зашифрованные данные в MongoDB. Это служба шифрования.

  async encrypt(data: string): Promise<string> {
    const { result } = await encrypt(this.keyring, data, {
      encryptionContext: context,
    });

    return result.toString('base64');
  }

  async decrypt(data: string): Promise<string> {
      const { plaintext, messageHeader } = await decrypt(this.keyring, data, {
        encoding: 'base64'
      });
      const { encryptionContext } = messageHeader;
      Object.entries(context).forEach(([key, value]) => {
        // if (encryptionContext[key] === value) console.log('Matched')
        if (encryptionContext[key] !== value)
          throw new Error('Encryption Context does not match expected values');
      });

   return plaintext.toString('utf8');
}

Я шифрую и расшифровываю данные с помощью хуков mon goose, как вы можете видеть в примере. Здесь каждый раз, когда я делаю запрос, оба действия выполняются дважды.

 schema.pre<Sample>('save', async function() {
    this.heartRate = await encryptionService.encrypt(this.heartRate);
 });

 schema.post<Sample>('save', async function(doc) {
    doc.heartRate = await encryptionService.decrypt(doc.heartRate);
 });

И таким образом я настраиваю модуль образца.

@Module({
  imports: [
    MongooseModule.forFeatureAsync([SampleSchemaFactory]),
    HttpModule,
    RabbitmqModule,
    ConfigModule,
    EncryptionModule,
  ],
  controllers: [SampleController],
  providers: [
    {
      provide: EncryptionService,
      useValue: new EncryptionService(
        'MY_KEY_ALIAS',
        'MY_KEY_ID',
      ),
    },
    SampleService,
    {
      provide: RabbitmqService,
      useValue: new RabbitmqService(
        'amqp://rabbitmq',
        'simulations',
        'results',
      ),
    },
  ],
})
export class SampleModule {}

У кого-нибудь была эта проблема ? Заранее спасибо.

...