У меня есть структура, которая содержит массив объектов классов, которые я загрузил в свою таблицу BigQuery, используя inferschema
. Однако сейчас я пытаюсь перебрать эту таблицу и соответствующим образом обновить значения, и я не могу получить доступ к столбцу, который содержит массив объектов класса.
Я уже пытался получить к нему доступ, используя разные имена классов, такие как:
- "Рецензенты [0] .Role"
- "` Рецензенты [0] .Role`"
- "Reviewers_0.Role"
- "Рецензенты (0) .Role"
... Ни один из которых не работает
//Models which I'm using for the schema of the tables
type PullRequest struct {
Reviewers []*Reviewer `json:"reviewers"`
}
type Reviewer struct {
Role string `json:"role"`
Status string `json:"status"`
User *User `json:"user"`
}
//Putting sql statements in constant to avoid SQL injection
const (
prUpdateSQL = "UPDATE %s.%s.%s"
prSetSQL = "SET %v = '%v'"
prSetNonEscapeSQL = "%v = %v"
prSetEscapeSQL = "%v = '%v'"
prWhereSQL = "WHERE ID = %v"
)
commandstring := fmt.Sprintf(prUpdateSQL+" ", projectID, datasetID, tableName)
for i, r := range pr.Reviewers{
reviewerString := fmt.Sprintf("Reviewers.%d", i)
commandstring += fmt.Sprintf(prSetEscapeSQL+", ", reviewerString+".Role", r.Role)
commandstring += fmt.Sprintf(prSetEscapeSQL+", ", reviewerString+".Status", r.Status)
commandstring += fmt.Sprintf(prSetEscapeSQL+", ", reviewerString+".User.Name", r.User.Name)
}
Я ожидаю, что результаты смогут установить значения различных объектов класса в массиве на мое новое значение, которое содержит pr. Вместо этого я получаю это сообщение об ошибке:
UPDATE ... SET не поддерживает модификацию массива с [] в [1: 914], invalidQuery "