Връзки в mgo

Написах проста програма с golang и mgo. Въпросът ми е как правилно да се правят връзки в mgo.

Първи подход:

type User struct {
    Id       bson.ObjectId   `json:"_id,omitempty" bson:"_id,omitempty"`
    Username string          `json:"username" bson:"username"`
    Email    string          `json:"email" bson:"email"`
    Password string          `json:"password" bson:"password"`
    Friends  []User          `json:"friends" bson:"friends"`
}

Приятели“ е част от потребителите. Мога да $бутна указател към потребител и той просто работи добре. Работата е там, че искам само да съхранявам препратка към потребителя, а не да го влагам:

Втори подход:

type User struct {
    Id       bson.ObjectId   `json:"_id,omitempty" bson:"_id,omitempty"`
    Username string          `json:"username" bson:"username"`
    Email    string          `json:"email" bson:"email"`
    Password string          `json:"password" bson:"password"`
    Friends  []bson.ObjectId `json:"friends" bson:"friends"`
}

Това ми дава изхода, който искам - но сега не се вижда от структурата кои вложени структури са посочени. mgo предоставя ли някакъв механизъм за справяне с това?


person Michel    schedule 26.12.2014    source източник


Отговори (1)


mgo е библиотека с драйвери за db, а не ORM.. Това, което бих направил, е да имам масива с идентификатори, както във втория пример (неекспортиран, с малки букви) и да имам метод Friends(), който прави запитвания към db по тези идентификатори и връща []Потребител

person Gal Ben-Haim    schedule 26.12.2014