首次使用后删除该功能

问题描述 投票:0回答:1

我有一个看起来像这样的简单SQL查询生成器:

class QueryBuilder {
  select(fields) {
    this.query = "SELECT `" + fields.join("`, `") + "` ";
    return this;
  }

  from(table) {
    this.query += "FROM `" + table + "` ";
    return this;
  }
}

问题是它返回this,所以我可以这样做:

const sql = builder.select("field1", "field2").from("table").select("I shouldn't be able to call select");

是否有任何方法可以从select实例中禁用/删除Builder函数,并在首次调用后自动完成?或者要强调第二次调用该函数将导致错误。

javascript builder
1个回答
0
投票

您可以返回特定的method而不是this,可以在此方法之后链式调用。

示例:

class QueryBuilder {
  select(fields) {
    this.query = "SELECT `" + fields.join("`, `") + "` ";
    return {
      from: this.from
    };
  }
  from(table) {
    this.query += "FROM `" + table + "` ";
    return {
      where : ""
    };
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.