2017-04-18 62 views
0

我想知道如果批处理请求数据存储将保存记录顺序时请求完成?谷歌云数据存储批处理操作序列

我使用标准的谷歌云/数据存储客户端库来执行批量获取请求,像这样(来自Datastore的文档)。

const keys = [taskKey1, taskKey2]; 

datastore.get(keys) 
    .then((results) => { 
    // Tasks retrieved successfully. 
    const tasks = results[0]; 

    console.log(tasks); 
    }); 

我怀疑结果的排列顺序与按键数组的顺序相同,但是在我的工作示例中并不是这样。

那么,我做错了什么,或者它是否Google Datastore不保留批量操作的顺序?

回答

1

要获得有序结果,您需要使用查询。首先,按key值过滤,然后按您要的属性排序。

看到这些文档的更多信息:

How to filter by Key

How to order results

+0

其实这是不是我在寻找。我需要得到这个实体使用这个键。顺便说一下,直接键获取和查询获取方式的性能如何? – QuestionAndAnswer

+1

据我所知,默认情况下,数据存储按键值排序实体。除非您使用查询来确定不同的排序,否则应该检索按键排序的匹配实体。看起来您需要在应用程序中对结果进行排序(检索后,假设您无法在Datastore命令中转换原始排序)。关于性能,'get()'方法应该比使用'key'过滤器的查询更快,但除非每天执行数十万或数百万次请求,否则我不会期望有相当大的差异。 –

+0

这就是目前实施的方式。 Manuak在我的代码中排序。但我真的不喜欢这个解决方案。 Si,现在我会离开它,也许Datastore的开发者会在未来推出解决这个问题的东西。 – QuestionAndAnswer