在v2中,可以使用查询/files
调用fileId in children
来获取作为所提供文件的父项的DriveFile
个对象的列表。
现在,似乎需要拨打/files/:fileId?fields=parents
,然后为每个返回的父母单独调用/files/:parentId
,可能会将一个电话转为十几个。
这是否正确,如果是这样为什么?这对我们的应用程序来说是一个巨大的性能影响,所以希望这是一种无证的方法。
答案 0 :(得分:2)
查询"' fileId'在儿童'"在v2中也没有公开存在(没有记录/支持),我也不记得它曾经存在过。 V2中存在 的是Parent集合,它有效地回答了同一个问题。在第3版中,为了获取文件的父母,您只需要接收孩子并询问父母字段。
至于是否会影响性能,我不认为它在实践中。 v2中的Parents资源开始时非常轻松,除了ID之外,唯一有用的字段是' isRoot'属性。您可以通过先调用files / root来获取该用户的根文件夹的ID来计算自己(只需一次并保存,它就不会为该用户进行更改。)
如果您需要获取有关父母的更多信息而不仅仅是ID,并且担心您必须进行的调用,请使用批处理来获取它们。如果您只有一个父级,则无需批处理(它只是开销。)如果您发现文件有多个父级,请创建批处理请求。这将作为单个HTTP请求/响应发送,并在后端非常有效地处理。
重点是,如果你只是需要ID,它并不比以前更糟糕。这是一个致电文件父母的电话。
如果您需要的不仅仅是ID,那么最多只有2个HTTP请求(超出批量大小的1000多个父母之外的奇怪边缘情况除外)。
答案 1 :(得分:0)
您只需提及如下内容:
var request = service.Files.List();
request.Q = "('root' in parents)";
var FileListOfParentOnly = request.Execute();
答案 2 :(得分:-1)
在V3中,可以列出父母的所有孩子,如下所述:https://developers.google.com/drive/v3/web/search-parameters
示例电话:
https://www.googleapis.com/drive/v3/files?q=parents in '0Byho0qAdzabmVl8xcDR1S0pNY3c'
当然用%20
替换空格,这将列出文件夹中id='0Byho0qAdzabmVl8xcDR1S0pNY3c'