Как получить доступ к имени столбца массива данных внутри столбца в таблице больших запросов? - PullRequest
1 голос
/ 01 июня 2019

У меня есть структура, которая содержит массив объектов классов, которые я загрузил в свою таблицу 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 "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...