Согласно эта ссылка Я должен использовать необработанные строки `` для выполнения запросов к базе данных SQL с Golang, чтобы избежать SQL-инъекций. В моем случае я пытаюсь использовать json-тип Postgres для одного из моих объектов данных.
Мои структуры следующие ~
type LessonDB struct { // for DB data retrieval
ID int `db:"id"`
Lesson string `db:"lesson"`
}
type Lesson struct { // for general data operations
ID int `json:"id"`
Name string `json:"name"`
Pages []Page `json:"pages,omitempty"`
}
Мой запрос выполняется следующим образом ~
func (l *Lesson) Insert() error {
query := `
INSERT INTO lessons (lesson)
VALUES ('{
"name": "$1"
}')
RETURNING id;
`
err := db.QueryRow(query, l.Name).Scan(&l.ID)
return err
}
PostMan возвращает сообщение об ошибке «~ pq: есть 1 параметр, но для оператора требуется 0»
При устранении неполадок с помощью fmt.PrintLn (query, l.Name) кажется, что параметр необработанных строк не работает, а поле «name» по-прежнему имеет значение «$ 1»