Микширование в loopback4

#loopbackjs #loopback4

#loopbackjs #loopback4

Вопрос:

Я хочу добавить createdAt и updatedAt к каждой модели в loopback 4

не удается найти имя ‘MixinTarget’.

Тип параметра ‘T’ экспортируемой функции имеет или использует частное имя ‘MixinTarget’.

Если я попытаюсь использовать документацию выше, возникает ошибка.

Комментарии:

1. можете ли вы предоставить ссылку на документацию, на которую вы ссылаетесь?

2. loopback.io/doc/en/lb4/migration-models-mixins.html в этом «циклическом подходе 4»

Ответ №1:

Чтобы решить эту проблему, я не использовал подход mixin. Я добавил следующие поля в свою модель.

   @property({
    type: 'date',
    default: () => new Date(),
    postgresql: {
      columnName: 'updated_at',
    },
  })
  updatedAt?: Date;
 

Он должен работать так, как ожидалось

Комментарии:

1. о, хорошо, спасибо за ответ, но просто хотел посмотреть, как mixin работает в loopback 4

Ответ №2:

MixinTaget должно быть импортировано из @loopback/core :

 import {MixinTarget} from '@loopback/core';
import {Class} from '@loopback/repository';

export function TimeStampMixin<T extends MixinTarget<object>>(baseClass: T) {
  return class extends baseClass {
    // add a new property `createdAt`
    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
    // @ts-ignore
    public createdAt: Date;
    constructor(...args: any[]) {
      super(args);
      this.createdAt = new Date();
    }
    printTimeStamp() {
      console.log('Instance created at: '   this.createdAt);
    }
  };
}
 

Дальнейшее чтение

На момент написания этого ответа документы не обновлялись, чтобы отразить последние разъяснения.