TypeScript считает, что mon goose Lean возвращает массив - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь создать общий c crud-контроллер с typescript / mon goose, и столкнулся с проблемой типа, если я сделаю следующее, он будет работать нормально:

async findOne<T>(id: number): Promise<T> {
    return this._collection.findOne({ _id: id }, null, { lean: true });
}

Но использование .lean () дает ошибку типа, даже если результат тот же (насколько я понимаю):

async findOne<T>(id: number): Promise<T> {
    return this._collection.findOne({ _id: id }).lean();
}

Он думает, что .lean () может возвращать T или T [ ].

В случае, если это нормально для findOne (), у меня также есть та же проблема с findById, которая, как я думал, может когда-либо вернуть только один объект:

async findById<T>(id: number): Promise<T> {
    return this._collection.findById(id).lean(); // error
    // return this._collection.findById(id, null, {lean: true}); <-- works
}

Что такое разница / проблема здесь?

1 Ответ

0 голосов
/ 06 августа 2020

Вы можете явно определить перенастроенное значение lean функции

async findOne<T>(id: number): Promise<T> {
    return this._collection.findOne({ _id: id }).lean<T>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...