db.QueryRow () возвращает неправильное количество аргументов - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть файл с именем user.go, функция GetUserByUsernameOrEmail возвращает модель пользователя и ошибку. Он получает эту информацию о пользователе из базы данных.

Моя цель - получить все параметры I SELECT пользователя, но возвращает на единицу меньше, чем следует.

Это для RESTAPI, однако сама модель действительно является проблемой. У пользователя есть поля user_id uuid, user_username строка, user_email строка, user_hash строка, user_salt строка, user_verified bool, user_admin bool, user_email_verified bool.

Я не очень старался, потому что я в растерянности шагов, чтобы продолжить. Однако для отладки я создал 8 тестовых переменных test, test2...test8. Я печатаю все 8 переменных (подробнее об этом см. Ниже).

    var test string
    var test2 string
    var test3 string
    var test4 string
    var test5 string
    var test6 string
    var test7 string
    var test8 string

    err = db.QueryRow(`
        SELECT 
            user_id, 
            user_username, 
            user_email, 
            user_hash,
            user_salt
            user_verified,
            user_admin,
            user_email_verified 
        FROM users
        WHERE user_`+field+`= $1
    `, value).Scan(&test, &test2, &test3, &test4, &test5, &test6, &test7, &test8)

Ожидается : я сканирую 8 полей в мои 8 переменных и продолжаю свой день.
Actual : 2019/11/10 10:36:42 sql: expected 7 destination arguments in Scan, not 8

Несколько других замечаний Я проверил его по 7 переменным для проверки и получил его при регистрации 7 переменных:

5e5d2f4a-1f5b-418d-a262-a63c719a3ea4 test test@[domain].com [hash] [salt] false false

1 Ответ

0 голосов
/ 11 ноября 2019

Упс - я пропустил запятую между user_salt и user_verified. Спасибо Мкоприва за помощь.

...