NestJs - добавленная в сервис недвижимость не возвращается - PullRequest
0 голосов
/ 06 июля 2019

Я использую NestJ, связанные с mongoDb. Объекты в монго (и схема в nestjs) имеют следующую структуру {NAME: string, YEAR: number, COVER: string}. Estoy usando NestJs conectado con mongoDb. Los objetos que se guardan en mongo tiene la siguiente estructura.

Интерфейс и dto имеет структуру

export class NAME {
    readonly NAME: string;
    readonly YEAR: number;
    readonly COVER: string;
    COVER_BASE64: string;
}

export interface NAME extends Document {
    readonly NAME: string;
    readonly YEAR: number;
    readonly COVER: string;
    COVER_BASE64: string;
}

В классе обслуживания есть следующая функция, которая добавляет объекты, получающие из Mongo, свойство cover_base64.

async getAlbums(): Promise<Album[]> {
        return new Promise((resolve, reject) => {
            this.model.find().exec((err, objs) => {
                if (err) { reject(err); }
                const objres = objs.map(obj => {
                    const base64 = this.getBase64(obj);
                    obj.COVER_BASE64 = base64;
                    return obj;
                });
                resolve(objsres);
            });
        });
   }

Проблема в том, что объекты, возвращаемые в классе контроллера, не имеют свойства COVER_BASE64. Но, отлаживая сервис, я вижу, что у каждого объекта albumRes есть свойство COVER_BASE64 с правильным значением, но в контроллере отладки это свойство исчезает.

Существует причина, по которой это свойство не должно присутствовать в контроллере, и, например, в почтальоне, http-запрос не получает свойство COVER_BASE64.

1 Ответ

0 голосов
/ 07 июля 2019

Разве это не из-за отсутствия await для нового обещания?Это также объясняет, почему в режиме отладки он работает правильно.Попробуйте:

async getAlbums(): Promise<Album[]> {
        return await new Promise((resolve, reject) => {
            this.model.find().exec((err, objs) => {
                if (err) { reject(err); }
                const objres = objs.map(obj => {
                    const base64 = this.getBase64(obj);
                    obj.COVER_BASE64 = base64;
                    return obj;
                });
                resolve(objsres);
            });
        });
   }
...