删除appengine blobstore中的孤立blob

Gau*_*rav 4 java google-app-engine blobstore google-cloud-datastore

我从数据存储区中删除了大量不需要的对象(大约7000个).每个对象都有一个与之关联的blob,由String(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);
Run Code Online (Sandbox Code Playgroud)

Gau*_*rav 11

UPDATE找到解决方案,BlobInfoFactory().queryBlobInfos()就是我想要的.

    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);
Run Code Online (Sandbox Code Playgroud)