GCP数据存储:无法在单个数组类型属性索引中存储不同的值类型

时间:2017-07-21 21:39:39

标签: google-cloud-datastore google-cloud-platform

我刚刚开始使用GCP,文档有点令人困惑(有很多,但也有很多方法可以做一件事。)

我有一个具有Array类型属性的实体。我可以将多个stringValue - 类型的kv对添加到数组中的单个索引,如下所示:

    "values": [
    {   
      "stringValue": "google.com",
      "stringValue": "k"
    },
    {
      "stringValue": "facebook.com"
    }
  ]

没有GCP问题,但如果我尝试将其更改为

   "values": [
    {   
      "stringValue": "google.com",
      "timestampValue": "xxxxxxxxxx"
    },
    {
      "stringValue": "facebook.com"
    }
  ]
它不会让我拯救。我是否必须使用嵌套实体?

1 个答案:

答案 0 :(得分:2)

Array类型中的元素可以是任何受支持的类型,但另一个Array除外。这意味着,Array类型可以包含Strings,Integer,Float,Timestamp,Null,EmbeddedEntities等元素。

GCD控制台中格式正确的数组如下所示。此Array有两个String元素,一个Integer和一个时间戳。

{
  "values": [
    {
      "stringValue": "propertyValue1"
    },
    {
      "stringValue": "propertyValue2"
    },
    {
      "integerValue": "300"
    },
    {
      "timestampValue": "2014-10-02T15:01:23.045123Z"
    }
  ]
}

如果需要在Array中存储嵌入式实体,它将如下所示:

{
  "values": [
    {
      "entityValue": {
        "properties": {
          "countryCode": {
            "stringValue": "91"
          },
          "subscriberNumber": {
            "stringValue": "2722 5858"
          },
          "areaCode": {
            "stringValue": "40"
          }
        }
      }
    },
    {
      "entityValue": {
        "properties": {
          "subscriberNumber": {
            "stringValue": "6666 0000"
          },
          "areaCode": {
            "stringValue": "80"
          },
          "countryCode": {
            "stringValue": "91"
          }
        }
      }
    }
  ]
}