0

В настоящее время я решаю, какой стек я буду использовать для (небольшой) социальной сети. Я хотел бы закодировать его в golang поверх Google App Engine, так как это приведет к чистым быстрым кодам со всеми преимуществами современных облачных сервисов &.Google App Engine: от одного до многих отношений в Go

Как бы вы реализовали отношения «один ко многим» и/или «много-к-одному» в GAE с помощью golang? Согласно документам вы можете использовать свои собственные типы в datastore-structs, если их свойства указаны в документации. Так, например:

type Comment struct { 
    Title string 
    Text  string 
    User  *User 
} 

type Photo struct { 
    Description string 
    Comments  []*Comment 
} 

должны работы, на мой взгляд, я прав? И если я прав, как я могу:

a) Заполните это взаимоотношение в одном запросе?

b) добавить комментарии к фотографии удобным способом? (Например, MongoDBs '$ толчке')

лучше, Мишель

ответ

2

В App Engine, вы можете смоделировать это с двумя типами сущностей:

type Comment struct { 
    Title string 
    Text  string 
    User  *User 
} 

type Photo struct { 
    Description string 
} 

Используйте ancestor path ассоциировать ребенка комментарии с родительское фото. Вы можете получить все комментарии к фотографии в одном запросе. Вы можете добавлять комментарии, помещая новые объекты комментариев.

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

У App Engine нет операторов модификации сущностей, таких как $ push.

+0

Большое спасибо за ваш ответ! С путями предков я могу моделировать отношения «много-к-одному»/«один ко многим». Как насчет отношений «многие ко многим»? Есть ли способ делать более сложные запросы предков или я сначала извлекаю все потомки, а затем фильтрую их? – Michel

+0

Это не то, что я сделал, но как насчет использования поля типа [] * datastore.Key? Возможно, начните новый вопрос? –

Смежные вопросы