Google Cloud Datastore 中的 Arrays/ListValues 中是否保留了顺序?

Is order preserved in Arrays/ListValues in Google Cloud Datastore?

当我在 Google Cloud Datastore 中存储一个实体,其中包含一些 属性 类型的数组,我稍后检索它时,数组 属性 中值的顺序似乎是始终以保存方式保存,例如:

// just some key where we save and retrieve our test entity
let key = datastore.key({
  namespace: 'whatever',
  path: ['ArrayTest', 'something']
});

// save an array of numbers in order
let numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
await datastore.save({key, data: {numbers}}); 

// ...

// retrieve that entity later:
let entity = await datastore.get(key);

console.log(entity.numbers);
/* prints out:
 * [ 'zero',
 * 'one',
 * 'two',
 * 'three',
 * 'four',
 * 'five',
 * 'six',
 * 'seven',
 * 'eight',
 * 'nine',
 * 'ten' ]
 */

我只做过这样的小测试,最多有几百个实体,然后简单地保存和获取。到目前为止,我还没有看到检索到的数组的排序方式与我保存它的方式不同的情况。 但我不确定这是否得到保证。我在文档中找不到明确说明数组/列表值的顺序以它们的保存方式保留的声明。

我想依赖以这种方式保留顺序的假设。

有人可以证实或拒绝这个假设吗?

这是 ArrayValue

的文档

"The order of this array may not be preserved if it contains a mix of indexed and unindexed values."

这意味着值顺序被保留 -- 如果您发现它没有提交错误的情况。