Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nested structs on GAE datastore using Go

I'm trying to figure out how to get nested structs to work with GAE datastore using Go. I know the datastore doesn't specifically support nested structs. I need to find a simple way of getting user information to go with a post when it is sent out to a user as JSON.

One thing I thought of was to put two fields for the user. One for the ID/key referencing to user and another one for the user type struct which would be added there when the post is loaded from the datastore. Extra fields seem silly so I'm hoping there is a better solution for this.

There are two entity types or structs: POST and USER

Posts need to contain information about the user who made the post.

The structure for the JSON I'm going to output for users is as follows:

  • POST
    • field1
    • field2
    • USER
      • user_field1
      • user_Field2
like image 588
user1132575 Avatar asked Jan 13 '13 21:01

user1132575


1 Answers

Go's appengine datastore api provides the PropertyLoadSaver interface for this sort of thing: https://developers.google.com/appengine/docs/go/datastore/reference#PropertyLoadSaver

You structure your struct however you want and then implement the Load and Save methods of that interface to populate it correctly. It means you write the serialization code yourself but it gives you full freedom in how you structure your data.

This will allow you still filter over the fields and have a nested struct.

like image 172
Jeremy Wall Avatar answered Sep 28 '22 00:09

Jeremy Wall