使用 fireSQL 转义单引号

Escape single quote using fireSQL

我在我的 Angular 项目中使用 Firebase Firestore,最近有一个名为 fireSQL 的项目在 Firestore 中使用 SQL 句子查询,它运行良好,但是当我尝试 select 我的值有单引号的东西它只会发送错误。我尝试使用所有 JavaScript 技术逃脱,但没有任何反应。

错误信息:

错误

Object { message: "Expected \"!=\", \"%\", \"*\", \"+\", \"-\", \"/\", \"<\", \"<=\", \"<>\", \"=\", \">\", \">=\", \"AND\", \"GROUP\", \"LIMIT\", \"OR\", \"ORDER\", \"UNION\", WHITE_SPACE, or end of input but \"s\" found.", expected: (29) […], found: "s", location: {…}, name: "SyntaxError", stack: "" }

查询是:

getBrandfromSub(brand, sub) {
    const fireSQL = new FireSQL(firebase.firestore());
    return fireSQL.rxQuery(`SELECT * FROM products WHERE brand = '${brand}' AND subcategory = '${sub}'`);
  }

您需要转义作为 SQL 查询发送的字符串中的单引号。 FireSQL source 表示 \'' 的转义序列。所以您的代码可以执行以下操作。 (如果您需要转义其他特殊字符,您需要将它们添加到 escapeSingleQuotes() 方法中。)

getBrandfromSub(brand, sub) {
  const fireSQL = new FireSQL(firebase.firestore());
  return fireSQL.rxQuery(`SELECT * FROM products WHERE brand = '${this.escapeSingleQuotes(brand)}' AND subcategory = '${this.escapeSingleQuotes(sub)}'`);
}

escapeSingleQuotes(s: string) {
  return s.replace("'", "\'");
}