App Engine建模问题 - 将生成的ID存储为数字还是字符串?

时间:2017-07-03 23:53:42

标签: google-app-engine app-engine-ndb

说我有一个博客应用程序,有博客文章和评论。

class BlogPost(ndb.Model):
  title = ndb.StringProperty()
  description = ndb.TextProperty()

我在博客文章中有用户评论的另一个模型:

class Comment(ndb.Model):
  username = ndb.StringProperty()
  blog_id = ndb.StringProperty()
  created = ndb.DateTimeProperty(auto_now_add=True)

当我查询特定BlogPost的所有评论时,我会这样做:

query = Comment.query(Comment.blog_id==blog_id).order(-Comment.created)

这样好吗?我的问题是,如果可以将blog_id存储为字符串属性而不是原始整数ID?我这样做是因为它是一个iOS应用程序,并且长整数ID导致我的iOS客户端出现整数溢出错误。

此类查询会不会出现问题?

1 个答案:

答案 0 :(得分:0)

我能看到的唯一问题是Comment.blog_id是一个字符串而blog_id是一个数字,所以你要比较一个字符串和一个int。 如果blog_id是一个字符串,那么您就是安全的。 ndb / Datastore索引的工作方式,您的查询将与字符串或整数相同(性能明智)。