Как запросить БД, а затем проверить результат - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно проверить, возвращает ли мой запрос значение true или false.Если он возвращает false, я хочу, чтобы он выдавал ошибку.Вот мой код:

func (dr *dbrepo) checkIfUnique(datacenterstring) error {
    statement := `select exists(select 1 from source where datacenter = $3)`

    _, checkIfExists := dr.db.Query(statement)
    if checkIfExists != nil {
        log.Print("Error  is not unique", checkIfExists)
        return checkIfExists
    }
    return nil
}

Проблема заключается в следующем: я думаю, что мне нужно преобразовать checkIfExists из строки в логическое значение, а затем посмотреть, является ли оно истинным или ложным.Но я не уверен, как это сделать.Есть идеи?Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 13 февраля 2019

Query() не возвращает истину или ложь.Возвращает два значения: *Rows & error.

func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
    ...
}

В вашем случае: checkIfExists - ошибка.С помощью этой ошибки вы уже можете сказать, что запрос был выполнен успешно или не выполнен.Как вы это делаете:

if checkIfExists != nil {
    return checkIfExists
}

Если вам нужна дополнительная информация (, например, строки, полученные по вашему запросу ), вам нужно заменить _ на переменную.Давайте назовем это rows и затем вы используете rows.Scan(), чтобы скопировать данные в столбцах в ваши пункты назначения.См. database/sql документы для получения дополнительной информации.

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