2017-10-04 6 views
2
var name = req.body.name; 
db.any('alter table "houseList" add $1 text', [name]) 

Ich habe versucht, eine neue Spalte Datenbank-Host auf Heroku hinzufügen den obigen Code in NodeJS mit aber ich erhalte immer diese Fehlermeldung:pg-Versprechen zu schaffen Spalte Fehler

error: syntax error at or near "'haha'"

‚haha 'ist der Wert innerhalb des Namens, jeder hat irgendeine Idee, was falsch ist?

Antwort

1

Sie verwenden eine ungültige Escape-Operation für den Spaltennamen als reguläre Zeichenfolgevariable.

Alle Schema-/Tabellen-/Spaltennamen werden als SQL-Namen bezeichnet und müssen mit "" maskiert werden.

Innerhalb von pg-promise bedeutet dies, dass Sie die SQL Names-Unterstützung verwenden müssen, mit :name: oder ~ Modifikator.

db.any('alter table "houseList" add $1:name text', [name]) 

oder

db.any('alter table "houseList" add $1~ text', [name]) 

Auch, wenn Sie sicher, dass Sie nur einfache Namen verwenden, dh keine weißen Flecken, keine Kapitelle, dann können Sie den Namen direkt verwenden, unescaped, was bedeutet, dass die Verwendung von Raw Text, über Modifikator :raw oder ^. Aber im Allgemeinen wird es nicht empfohlen, d. H. Das Entkommen der Namen wird als sicherer empfohlen;)

+0

Vielen Dank! –

+0

@JienanTang Wenn es Ihre Frage beantwortet, dann akzeptieren Sie es, indem Sie auf das Häkchen gegen den Zähler der Stimmen klicken. –

Verwandte Themen