Моделирование от N до N ассоциаций в Go на App Engine - PullRequest
1 голос
/ 22 декабря 2011

Я пытаюсь написать веб-приложение на Go, используя Google App Engine, и у меня возник вопрос о моделировании отношений с использованием хранилища данных.

Я знаю, что в Python я смогу смоделировать отношения, используя db.referenceProperty (). Похоже, я не могу понять, как создать похожую ассоциацию с помощью API Go.

Кому-нибудь повезло с этим?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2011

Вы можете использовать Ключ как свойство объекта: http://code.google.com/appengine/docs/go/datastore/reference.html

Как-то так (я не знаю, иди так терпеть меня):

type Employee struct {
    Name     string
    Boss     *Key
}

employee := Employee{
    Name:     "John Doe",
    Boss:     key    // a key to some other entity
}
2 голосов
/ 24 декабря 2011

Питер, ты определенно был на правильном пути. Я думаю Я понял это. Я на самом деле не проверял это, но, похоже, это правильно в средстве просмотра хранилища данных. То, что у меня сейчас выглядит, выглядит так (без учета проверки ошибок для примера):

type Boss struct {
    Name, Uuid string
}

type Employee struct {
    Name, Uuid string,
    Boss *datastore.Key
}

boss := &Boss {
    Name:  "Pointy Haired Boss",
    Uuid:  <<some uuid>>,
}

dilbert := &Employee {
    Name: "Dilbert",
    Uuid: <<some uuid>>,
    boss: nil,
}

datastore.Put(context, datastore.NewIncompleteKey(context, "Boss", nil), bossman)
query := datastore.NewQuery("Boss").Filter("Uuid =", bossMan)
for t := query.Run(ctx); ; {
    var employee Employee
    key, err := t.Next(&employee)
    if err == datastore.Done {
        break
    }
    if err != nil {
        fmt.Fprintf(w, "Error %s", err)
    }
    dilbert.Boss = key
}
datastore.Put(context, datastore.NewIncompleteKey(context, "Employee", nil), dilbert)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...