首页 > 解决方案 > db.QueryRow() 返回错误数量的参数

问题描述

我有一个名为 的文件user.go,该函数GetUserByUsernameOrEmail返回用户模型和错误。它从数据库中获取此用户信息。

我的目标是获取SELECT用户的所有参数 I,但它返回的参数比它应该返回的少一个。

这是针对 REST API 的,但是模型本身确实是问题所在。用户有字段user_iduuid、user_usernamestring、user_emailstring、user_hashstring、user_saltstring、user_verifiedbool、user_adminbool、user_email_verifiedbool。

我没有尝试太多,因为我不知道如何继续。然而,为了调试,我创建了 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 个变量,然后继续我的一天。
实际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

标签: postgresqlgolibpq

解决方案


糟糕 - 我错过了 and 之间的user_salt逗号user_verified。感谢mkopriva的帮助。


推荐阅读