应用引擎建模问题 - 将生成的 ID 存储为数字或字符串?



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

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)

当我查询特定博客文章的所有评论时,我确实:

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

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

这种类型的查询扩展没有问题吗?

我能看到的唯一问题是Comment.blog_id是一个字符串,blog_id是一个数字,所以你会将字符串与整数进行比较。 如果blog_id是字符串,那么您是安全的。 ndb/数据存储索引的工作方式,您的查询将与字符串或整数相同(性能方面(。

最新更新