我从数据存储中删除了大量我没有删除的对象
需要(大约 7000 个)。
这些对象中的每一个都有一个与之关联的 blob,由
字符串(blob 键)。
正如您现在可能已经猜到的那样,我忘记删除那些 blob。
现在我没有对它们的任何引用,但我想删除它们。
我似乎找不到办法做到这一点。
任何帮助将不胜感激。
更新
找到了解决方案。
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
List<BlobInfo> blobsToCheck = new LinkedList<BlobInfo>();
Iterator<BlobInfo> iterator = null;
if(afterBlobKey == null){
iterator = new BlobInfoFactory().queryBlobInfos();
}else{
iterator = new BlobInfoFactory().queryBlobInfosAfter(new BlobKey(afterBlobKey));
}
while(iterator.hasNext()){
blobsToCheck.add(iterator.next());
}
//Check those blobs if they have reference in datastore
//Delete using blobstoreService.delete(blobKey);
最佳答案
更新 找到了解决方案,BlobInfoFactory().queryBlobInfos() 正是我要找的。p>
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
List<BlobInfo> blobsToCheck = new LinkedList<BlobInfo>();
Iterator<BlobInfo> iterator = null;
if(afterBlobKey == null){
iterator = new BlobInfoFactory().queryBlobInfos();
}else{
iterator = new BlobInfoFactory().queryBlobInfosAfter(new BlobKey(afterBlobKey));
}
while(iterator.hasNext()){
blobsToCheck.add(iterator.next());
}
//Check those blobs if they have reference in datastore
//Delete using blobstoreService.delete(blobKey);
关于java - 删除 appengine blobstore 中的孤立 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362013/