如何通过nodeJS从Google Datastore中的索引中排除数组字段?

时间:2017-08-23 09:23:00

标签: node.js google-app-engine google-cloud-datastore nosql

我正在使用Google数据存储区,并且索引属性的大小限制为1500字节。 documentation提到未索引属性的限制为1 MB - 89字节。我有以下结构:

    dataset = {
        property1: String,
        property2: String,
        property3: [
            {
                subProperty1: String,
                subProperty2: ArrayList<String>, // Larger than 1500 bytes
                excludeFromIndexes: true
            }   
        ]

}

它给出:“错误:属性”subProperty2“的值超过1500字节。”

它不起作用,我无法理解为什么。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

要从索引中排除数组类型属性,数组中的每个元素都必须将excludeFromIndexes设置为true。主Array属性应 NOT 设置excludeFromIndexes。从GCD控制台编辑数组属性时,数组属性的JSON应如下所示:

{
  "values": [
    {
      "stringValue": "a", 
      "excludeFromIndexes": true
    },
    {
      "stringValue": "b", 
      "excludeFromIndexes": true
    },
    {
      "stringValue": "c",
      "excludeFromIndexes": true
    }
  ]
}

另请注意,1500字节的长度限制适用于数组的每个单独元素,而不是整个数组大小。因此,如果您选择这样做,您可以在数组中真正拥有长字符串并仍然能够编制索引。

另外需要注意的是,您不必从索引中排除数组的所有元素。您可以选择和/或选择哪些元素可以编入索引。

不太熟悉Node.js,但似乎API documentation中有一个例子(在#save部分滚动一页左右)。