Удаление пустых бланков в appengine blobstore - PullRequest
4 голосов
/ 19 марта 2011

Я удалил из хранилища данных большое количество объектов, которые мне не нужны (около 7000 из них).С каждым из этих объектов был связан BLOB-объект, на который ссылается String (ключ 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);

1 Ответ

11 голосов
/ 20 марта 2011

ОБНОВЛЕНИЕ Нашел решение, 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);
...