Как вернуть строку идентификатора вместо _bsontype с сериализацией NestJS - PullRequest
0 голосов
/ 20 февраля 2019

При использовании

@UseInterceptors(ClassSerializerInterceptor)

, как это объяснено в документации здесь

Я получаю желаемый отфильтрованный результат, однако при использовании mongodb идентификатор форматируется в_bsontype вместо обычного string, как это было раньше без перехватчика, например:

{
    "id": {
        "_bsontype": "ObjectID",
        "id": {
            "0": 92,
            "1": 108,
            "2": 182,
            "3": 85,
            "4": 185,
            "5": 20,
            "6": 221,
            "7": 12,
            "8": 56,
            "9": 66,
            "10": 131,
            "11": 172
        }
    },
    "createdAt": "2019-02-20T02:07:17.895Z",
    "updatedAt": "2019-02-20T02:07:17.895Z",
    "firstName": "The First Name",
    "lastName": "The Last Name",
    "email": "giberish@gmail.com"
}

Как я могу преобразовать его обратно в обычную строку идентификатора, подобную этой?

{
    "id": "5c6cb655b914dd0c384283ac",
    "createdAt": "2019-02-20T02:07:17.895Z",
    "updatedAt": "2019-02-20T02:07:17.895Z",
    "firstName": "The First Name",
    "lastName": "The Last Name",
    "email": "giberish@gmail.com"
    "password": "okthen"
}

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете использовать @Transform() преобразователя класса с опцией toPlainOnly:

import { Transform } from 'class-transformer';

@Entity()
export class User {
  @ObjectIdColumn()
  @Transform((value) => value.toString(), { toPlainOnly: true })
  _id: ObjectID;

ClassSerializerInterceptor внутренне использует метод classToPlain() преобразователя класса.

...