Go 一对多关系需要定义有效的外键错误

Go 一对多关系需要定义有效的外键错误,go,go-gorm,Go,Go Gorm,我想做一个webapp,我有一个简单的数据模型和一对多的关系。我试图坚持gorm的文档,据我所知,这应该是可行的: package dbModels import "gorm.io/gorm" type Post struct { gorm.Model Text string Likes int Comments []Comment } type Comment struct { gorm.Model Text stri

我想做一个webapp,我有一个简单的数据模型和一对多的关系。我试图坚持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函数

我抓起了你的模型定义并测试了它们,它们工作得很好。在这个CreatePost中,您没有检查Create调用中的错误,那么您如何知道这是代码中导致错误消息的点呢?再仔细检查一下,我想知道为什么CreatePost代码将一个
[]*model.Comment
分配给Comments字段,因为它是在模块dbModels中定义的,并且是结构的一部分,而不是指向结构的指针的一部分。是的,所以基本上我想对orm和gql使用不同的模型。我的想法是,我可能希望后端状态中有一些不需要在数据库中的东西。这就是我指定model.Comment的原因。我通过将graphql模型用作orm模型,成功地修复了这个错误。所以问题一定是我把错误的数据放进了数据库。你能解释一下吗?我面临着同样的问题,但我的是一个简单的CRUD应用程序