将DatastoreKeys存储在实体属性中的普通字符串上是否有任何优势?
我们说我们有这个实体:
{
someForeignKey: DatastoreKey
}
只有DatastoreKey类型的字段。 如果我只存储一个简单的密钥字符串,如果我们认为没有使用名称空间,或者字符串只引用名称空间作用域中的实体,那么会有什么不同吗?
{
someForeignKey: string
}
答案 0 :(得分:1)
数据存储区密钥不仅仅是一个字符串,它实际上是一组密钥类型和密钥标识符的列表,用于描述外键的整个实体祖先。是的,它可以表示为单个字符串(例如,至少某些客户端库具有获取相应urlsafe字符串的方法)。
我看到存储密钥的优点是:
在这种情况下,命名空间确实没有任何意义。
答案 1 :(得分:1)
除Dan Cornilescu条评论外,我还会在official documentation key description下面复制:
Cloud Datastore中的每个实体都有一个唯一标识它的密钥。 密钥由以下组件组成:
- 实体的名称空间,允许multitenancy。
- 实体的kind,它将其归类为Cloud Datastore查询。
- 单个实体的identifier,可以是:
- 一个键名字符串。
- 整数数字ID。
- 在Cloud Datastore层次结构中定位实体的可选ancestor path。
应用程序可以从Cloud Datastore获取单个实体 使用实体的密钥,或者它可以通过检索一个或多个实体 根据实体的键或属性值发出query。