postgresql - db.QueryRow() 返回错误数量的参数
问题描述
我有一个名为 的文件user.go
,该函数GetUserByUsernameOrEmail
返回用户模型和错误。它从数据库中获取此用户信息。
我的目标是获取SELECT
用户的所有参数 I,但它返回的参数比它应该返回的少一个。
这是针对 REST API 的,但是模型本身确实是问题所在。用户有字段user_id
uuid、user_username
string、user_email
string、user_hash
string、user_salt
string、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 个变量,然后继续我的一天。
实际: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
解决方案
糟糕 - 我错过了 and 之间的user_salt
逗号user_verified
。感谢mkopriva的帮助。
推荐阅读
- laravel - 如何自定义 Carbon 类以在 laravel 中根据月而不是年计算年龄
- r - 如何在 R 的面板 data.frame 中识别包含非时间因变量的列?
- gekko - 用目标函数表示的整数约束优化以执行另一个程序调用
- selenium - 如何从硒中的领事中删除错误
- excel - 保存电子表格 VBA 的非公式化版本
- java - Selenium 仅选择 WebElement 的直接子级
- agora.io - 使用 agora 有哪些软硬件要求?
- powershell - 如果获取的文件内容超过 2 行,则发送电子邮件
- simulator - 如何向 RISCV 交叉编译器添加自定义指令?
- reactjs - 使用 React Hooks 的生命周期问题