如何使协会的请求主体属于一个组织

I have People and Data , where People has one Data and Data belongs to People how to make a request body JSON for that Association in go gin? I am using gorm for this case, the documentation of gorm is not clear for me for this case, i was supposed like

func CreateTodo(db *gorm.DB) func(c *gin.Context) {
    var person Person
    var data Data 

    c.bindJSON(&Person)
    c.bindJSON(&Data)

    db.create(&Person)
    db.create(&Data)

    c.JSON(200, gin.H{ result : []interface{person, data})
}
type (
    Data struct {
        ID          uint `gorm:"auto_increment"`
        PersonID    uint
        Person      *Person `gorm:"foreignkey:PersonID;association_foreignkey:id"`
        Address     string
        Languange   string
    }

    Person struct {
        gorm.Model
        Email    string `gorm:"type:varchar(100);unique_index;not null"`
        Password string `gorm:"type:varchar(100);not null"`
        Role     string `gorm:"size:30;not null"`
        DataID   uint
        Data     *Data `gorm:""foreignkey:DataID;association_foreignkey:id"`
    }
)

I am sure it will not make the person_id and data_id for FK what I ask, how I can make the request body for that Association until those request created with FK itself ? should I create then update again for person_id and data_id after it created ??

Gorm will do almost everything for an association link. It seems that "DataID" in your Person struct is useless. See the code below for an example:

package main

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/sqlite"
)

type (
    Data struct {
        ID        uint `gorm:"auto_increment"`
        PersonID  uint
        Person    *Person `gorm:"foreignkey:PersonID;association_foreignkey:id"`
        Address   string
        Languange string
    }

    Person struct {
        gorm.Model
        Email    string `gorm:"type:varchar(100);unique_index;not null"`
        Password string `gorm:"type:varchar(100);not null"`
        Role     string `gorm:"size:30;not null"`
        Data     *Data  `gorm:""foreignkey:PersonID;association_foreignkey:id"`
    }
)

func main() {
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        panic("failed to connect database")
    }
    db.LogMode(true)
    defer db.Close()

    // Migrate the schema
    db.AutoMigrate(&Person{}, &Data{})

    data := &Data{
        Address:   "Shanghai,China",
        Languange: "Chinese",
    }
    person := &Person{
        Email: "zhjw43@163.com",
        Data:  data,
    }
    db.Save(person)

    db.DropTable("data", "people")
}