如何在GAE的数据存储区中存储信息

时间:2014-08-04 01:46:46

标签: php json google-app-engine google-cloud-datastore

我想将信息存储在GAE中提供的Google Cloud Datastore中。

我有以下JSON:

{ "users": [
    "ABC123",
    "XYZ987",
    "ZHI663"
    ]
}

我希望将其存储在数据存储中,但无法解决问题。我不能使用' Text String'因为它限制为500个字符,我需要能够拥有许多用户。

我在文档here中看到有一个'列表'类型听起来与我需要的完全一样但是当我在开发人员控制台中创建实体时,此选项不显示。见图:

http://s27.postimg.org/v0x83n89f/entity.png

如果您只能使用'列表'使用API​​的类型可以让任何人向我展示在PHP中执行此操作的示例吗?

1 个答案:

答案 0 :(得分:1)

GAE不允许我们修改ListText等复杂内容。

让我简要解释一下,TextListSetMap

  

文字:com.google.appengine.api.datastore.Text

     
      
  1. 我们可以为文本字段存储最多20k个字符。
  2.   
  3. 它不会被编入索引。
  4.   
  5. 我们无法在数据存储视图中对其进行修改。
  6.         

    列表或设置

         
        
    1. 我们可以根据需要存储任意数量的条目。
    2.   
    3. 此处的元素将导致复杂的索引,即元素将在它们之间形成组合,因此GAE将索引每个元素   组合
    4.   
    5. 我们可以通过定义为un-index来取消索引。
    6.   
    7. 我们无法在GAE数据存储区视图中进行修改。
    8.         

      地图

      1.Though GAE wont allow Map, we can serialize it and store as blob.   
      2. Limited to 1MB   
      3. We cannot view or modify it in the GAE datastore view.
      

在三者中,只有List or Set被编入索引。因此,如果您要查询以检查json是否包含用户,则应使用List or Set.

如果您使用其他两个,则需要获取它,然后检查用户是否在那里。

这三者各有利弊。因此,由您来决定您将根据需要使用哪一个。

如果您想在用户登录时使用它,那么列表或设置是可选的,因为可以轻松查询,因为所有条目都已预先编入索引。