数据模型 - 如何在 GAE 中构造实体
Data Model - How to structure entities in GAE
我是一名 android 开发人员。我有一个应用程序连接到服务器中的 MySql 数据库。现在我打算将它们迁移到 Google 应用引擎。但是我对如何构建我的实体感到困惑。
有table个'users'和'books'。用户可以拥有多本书,一本书可以由多人拥有。所以有一个引用 table 叫做 'book-owners'。在这个table中有一栏叫做阅读页数。所以每个用户预订关系都有一个特殊的 属性 'no. of pages read'.
使用 MySql 我可以执行连接查询以获取所有信息 want.Now 使用 GAE 我们无法执行连接查询。我要的就是这些,
- 用户拥有的所有图书以及 'no. of pages read' 属性
- 特定图书的拥有者人数
当我查询用户时,我需要以下响应:
{"user_id":"123","user_name":"John Doe","books":[{"book_id":"123456", "book_name":"Some book name","pages_read":126},{"book_id":"123457","book_name":"Some book name","pages_read":26},{"book_id":"123458","book_name":"Some book name","pages_read":274},{"book_id":"123459","book_name":"Some book name","pages_read":48}]}
那么如何构建我的实体。以及如何查询它们?请给我一些建议/指示。已经谢谢了。
这是一种方法:
class User(ndb.Model):
[any data here you want]
class Book(ndb.Model):
[any data here you want]
class OwnedBook(ndb.Model):
user = ndb.KeyProperty(User)
book = ndb.KeyProperty(Book)
pages_read = ndb.IntegerProperty()
要获取用户拥有的已阅读页面的图书,请执行以下操作:
books_owned_by_user = OwnedBook.query(OwnedBook.user = user1)
获取 OwnedBook
个实体后,您需要进行进一步查询以获取有关书籍的更多信息。
for owned_book in OwnedBook.query(OwnedBook.user = user1):
book = owned_book.book.get()
您需要考虑如何针对您的特定应用程序有效地执行此操作。
要获取一本书的所有者数量,请执行以下操作:
num_owners = OwnedBook.query(OwnedBook.book = book1).count()
我是一名 android 开发人员。我有一个应用程序连接到服务器中的 MySql 数据库。现在我打算将它们迁移到 Google 应用引擎。但是我对如何构建我的实体感到困惑。
有table个'users'和'books'。用户可以拥有多本书,一本书可以由多人拥有。所以有一个引用 table 叫做 'book-owners'。在这个table中有一栏叫做阅读页数。所以每个用户预订关系都有一个特殊的 属性 'no. of pages read'.
使用 MySql 我可以执行连接查询以获取所有信息 want.Now 使用 GAE 我们无法执行连接查询。我要的就是这些,
- 用户拥有的所有图书以及 'no. of pages read' 属性
- 特定图书的拥有者人数
当我查询用户时,我需要以下响应:
{"user_id":"123","user_name":"John Doe","books":[{"book_id":"123456", "book_name":"Some book name","pages_read":126},{"book_id":"123457","book_name":"Some book name","pages_read":26},{"book_id":"123458","book_name":"Some book name","pages_read":274},{"book_id":"123459","book_name":"Some book name","pages_read":48}]}
那么如何构建我的实体。以及如何查询它们?请给我一些建议/指示。已经谢谢了。
这是一种方法:
class User(ndb.Model):
[any data here you want]
class Book(ndb.Model):
[any data here you want]
class OwnedBook(ndb.Model):
user = ndb.KeyProperty(User)
book = ndb.KeyProperty(Book)
pages_read = ndb.IntegerProperty()
要获取用户拥有的已阅读页面的图书,请执行以下操作:
books_owned_by_user = OwnedBook.query(OwnedBook.user = user1)
获取 OwnedBook
个实体后,您需要进行进一步查询以获取有关书籍的更多信息。
for owned_book in OwnedBook.query(OwnedBook.user = user1):
book = owned_book.book.get()
您需要考虑如何针对您的特定应用程序有效地执行此操作。
要获取一本书的所有者数量,请执行以下操作:
num_owners = OwnedBook.query(OwnedBook.book = book1).count()