一对多关系需要定义一个有效的外键错误
One-to-many relation need to define a valid foreign key error
我想制作一个网络应用程序,并且我有一个具有一对多关系的简单数据模型。我试着坚持 gorm 的文档,据我所知这应该有效:
package dbModels
import "gorm.io/gorm"
type Post struct {
gorm.Model
Text string
Likes int
Comments []Comment
}
type Comment struct {
gorm.Model
Text string
Likes int
PostID uint
}
我正在这样迁移这些模型:
db.AutoMigrate(&dbModels.Post{}, &dbModels.Comment{})
然后我想把这个对象放在post:
func (r *mutationResolver) CreatePost(ctx context.Context, input model.PostInput) (*model.Post, error) {
var items []*model.Comment
post := model.Post{
Text: input.Text,
Likes: 0,
Comments: items,
}
r.DB.Create(&post)
return &post, nil
}
但是我收到以下错误:
2021/01/31 11:23:01 /home/felix/Projekte/GoReact/server/graph/schema.resolvers.go:21 invalid field found for struct github.com/blamefelix/TwitterClone/graph/model.Post's field Comments, need to define a valid foreign key for relations or it need to implement the Valuer/Scanner interface
我真的不明白我做错了什么。从 gorm 文档中,我认为如果我这样说,关系将由 gorm 管理?我怀疑是我输入了错误的数据?
所以我设法通过对 graphql 和 gorm 使用相同的模型来修复它。问题一定是我将错误的数据输入了 db create 函数
我想制作一个网络应用程序,并且我有一个具有一对多关系的简单数据模型。我试着坚持 gorm 的文档,据我所知这应该有效:
package dbModels
import "gorm.io/gorm"
type Post struct {
gorm.Model
Text string
Likes int
Comments []Comment
}
type Comment struct {
gorm.Model
Text string
Likes int
PostID uint
}
我正在这样迁移这些模型:
db.AutoMigrate(&dbModels.Post{}, &dbModels.Comment{})
然后我想把这个对象放在post:
func (r *mutationResolver) CreatePost(ctx context.Context, input model.PostInput) (*model.Post, error) {
var items []*model.Comment
post := model.Post{
Text: input.Text,
Likes: 0,
Comments: items,
}
r.DB.Create(&post)
return &post, nil
}
但是我收到以下错误:
2021/01/31 11:23:01 /home/felix/Projekte/GoReact/server/graph/schema.resolvers.go:21 invalid field found for struct github.com/blamefelix/TwitterClone/graph/model.Post's field Comments, need to define a valid foreign key for relations or it need to implement the Valuer/Scanner interface
我真的不明白我做错了什么。从 gorm 文档中,我认为如果我这样说,关系将由 gorm 管理?我怀疑是我输入了错误的数据?
所以我设法通过对 graphql 和 gorm 使用相同的模型来修复它。问题一定是我将错误的数据输入了 db create 函数