使用 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("'", "\'");
}
我在我的 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("'", "\'");
}