如何使用Go的dataStore创建数据模型?

时间:2013-10-16 05:16:36

标签: google-app-engine database-design go data-modeling

我根据在mySQL中创建表的方式创建了一系列结构:

type User struct {
    UserID      int
    Email       string
    Password    string
    DateCreated time.Time
}

type Device struct {
    DeviceID      int
    Udid          string
    DateCreated   time.Time
    DateUpdated   time.Time
    IntLoginTotal int
}

type DeviceInfo struct {
    DeviceID       int
    DeviceName     string
    Model          string
    LocalizedModel string
    SystemName     string
    SystemVersion  string
    Locale         string
    Language       string
    DateCreated    time.Time
}

但是,我的印象是我无法做出这样的请求,而是我需要创建一个可以包含多个设备数组的结构(每个包含多个设备信息记录的数组)。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

在这种情况下,只需将“Kind”设置为结构的名称。

来自文档:

func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key
  

NewKey创建一个新密钥。善良不能空虚。一个或两个   stringID和intID必须为零。如果两者都为零,则返回的密钥是   不完整的。父母必须是完整的密钥或零。

例如保存用户。

c := appengine.NewContext(r)
u := &User{UserID: userid, Email: email, Password: password, DateCreated: datecreated}
k := datastore.NewKey(c, "User", u.UserID, 0, nil)
e := p
_, err := datastore.Put(c, k, e)

遵循相同的逻辑来保存不同的结构类型。

加载用户:

c := appengine.NewContext(r)

k := datastore.NewKey(c, "User", userid, 0, nil)
e := new(User)

_, err := datastore.Get(c, k, e)