我正在尝试使用CloudinaryDotNet(Cloudinary .NET SDK)来删除创建日期早于特定日期且具有特定前缀(如果我理解正确的话,则为公共ID的开头)的资源。我还没有找到任何真正好的方法来做到这一点。
到目前为止,我已经想出了一个解决方案,我必须一次列出所有资源 500,因为这是该方法返回的最大资源
ListResources
。当我收集了我想要删除的资源的公共 ID 后,我使用方法 DeleteResources
. 删除它们。
我遇到的主要问题是现有的列表资源方法的版本受到奇怪的限制。
ListResources
可以采用 ListResourcesParams
类型的对象,但此类不包含足够的属性来缩小范围,因此我不必同时多次调用 500 个资源来获取数千个资源。
我以为解决办法就是方法
ListResourcesByPrefix
。有一个名为 ListResourcesByPrefixParams
的类,它继承自 ListResourcesParams
,但是 ListResourcesByPrefix
没有采用 ListResourcesByPrefixParams
的版本。它需要一些随机参数并从中创建一个 ListResourcesByPrefixParams
对象,这使我无法设置 StartAt
、Direction
或 MaxResults
等属性。
最后看来我必须选择是否要过滤掉早于特定日期或具有特定前缀的资源,我无法组合过滤选项。这是正确的还是我遗漏了什么?
还有当
ListResourcesByPrefix
我似乎无法设置MaxResults
所以使用这个方法时我当时必须获得10个资源,这看起来很奇怪。
我在网上找不到任何关于 CloudinaryDotNet 的好的文档,所以这是我通过阅读代码和反复试验发现的。
看来我再次询问时太仓促了。稍后我意识到你可以发送一个
ListResourcesByPrefixParams
到 ListResources
并实现我所需要的。然而,我似乎确实需要过滤 CreatedAt
上的结果,因为这显然与将 StartAt
设置为正确的日期并将 Direction
设置为我假设的“desc”不同。
似乎也有必要设置
Type
,但我还没有找到它可以包含的内容的列表。使用 ListResourcesByPrefix
时的默认设置是“上传”,所以这就是我使用的。