猫鼬中的克隆查询

时间:2019-05-02 04:44:51

标签: typescript mongoose functional-programming

我试图围绕猫鼬查询创建一个包装器类,从而使我能够以更实用的方式使用该查询。每当用户向该查询添加wherelimit之类的子句时,我都希望该类克隆自身,然后将新子句应用于克隆的对象。这样,我就可以使用唯一查询和新查询,而旧查询则是可靠的,因为它永远不会更改。

到目前为止,我找不到任何支持该解决方案的解决方案。

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子句和限制等,并且只在最后应用它们,但这对我来说似乎并不正确。

有人有不同的想法,可以指出正确的方向吗?

谢谢

0 个答案:

没有答案