我正在尝试从一对多关系预加载数据,但我总是收到“ApiKeys:架构客户端不支持的关系”错误。(结构是指针的原因是因为我使用的是 gqlgen,这是默认配置)
type Client struct {
// Client ID
ID int `json:"id"`
UserName string `json:"userName"`
// Client login hashed password
Password string `json:"password"`
// ApiKeys
APIKeys []*APIKey `json:"apiKeys"`
}
type APIKey struct {
// ApiKey Index
ID int `json:"id"`
// ApiKey Value
Key string `json:"key"`
// ApiKey Client Relation
ClientID int `json:"clientID"`
// ApiKey Client Info
Client *Client `json:"client"`
}
这就是调用 ApiKeys 的 Preload 的函数。
func (r *queryResolver) ClientInfoResolver(username string, password string) (*model.Client, error) {
var clients []*model.Client
var client *model.Client
query := r.Resolver.DB
query = query.Where("user_name = ? AND password = ?", username, password).Preload("ApiKeys").Find(&clients)
if query.Error != nil {
return client, query.Error
}
return clients[0], nil
}
我通过 gorm 的文档了解到关系的外键是 ClientID,尽管不是明确的(也不能通过指定它来工作)我在这里理解有什么问题吗?