Запросы клонирования в мангусте - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь создать класс-оболочку для запроса mongoose, который позволяет мне использовать запрос более функциональным образом. Всякий раз, когда пользователь добавляет к этому запросу предложение типа where или limit, я хочу, чтобы класс сам клонировал, а затем применил новое предложение к клонированному объекту. Таким образом, я мог бы использовать единственный и новый запрос, и старый был надежным, так как он никогда не менялся.

До сих пор я не мог найти решение, которое поддерживает это.

class BaseMongoQuery<T> {
  constructor(private readonly query: mongoose.DocumentQuery<ReadonlyArray<T>, T & Document, {}> {}

  where(parameters: ParameterType<T>) {
    const newQuery = this.cloneMyQuery()
    newQuery.find(parameters)
    return new BaseMongoQuery(newQuery)
  }

  private cloneMyQuery() {
    // return clone of this.query
    // This is what I am looking for
  }

  getResults() {
    return this.query.exec()
  }
}

Я знаю, что мог бы написать это по-другому и запомнить все положения и ограничения where и тому подобное, и применять их только в конце, но это также не кажется мне вполне правильным.

Кто-нибудь имеет другую идею и может указать мне правильное направление?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...