FR: Support direct lookup of Storage objects by `metadata.id`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- google-cloud, node.js, typescript
Línea de trabajo
Comienza con la clase Bucket del Admin SDK y rastrea cómo crea referencias a archivos; compara ese recorrido con el cliente subyacente @google-cloud/storage mencionado en el issue. Define cómo se admitiría una búsqueda de metadata.id y, después, verifica que el objeto devuelto admita getMetadata(), download() y getSignedUrl(), igual que bucket.file(path).
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Title:
FR: Support direct lookup of Storage objects by metadata.id
Is your feature request related to a problem? Please describe.
Currently in the Admin SDK there is no way to fetch a file reference directly by its internal metadata.id. Users must call bucket.getFiles() (optionally with a prefix) and then iterate through every file’s metadata until they find a match. This approach is painfully inefficient for buckets with hundreds or thousands of objects, and leads to high latency and extra egress charges just to resolve a single file by its ID.
Describe the solution you’d like
Add a first-class API—e.g.
const file = await bucket.fileById('ABCD1234-xyz');
under the Admin SDK’s Bucket class (and optionally in the underlying @google-cloud/storage client). Internally it could leverage a server-side lookup or index rather than requiring a full listing scan. The returned object should behave identically to bucket.file(path) so you can immediately call getMetadata(), download(), or getSignedUrl().
Describe alternatives you’ve considered
-
Client-side scan:
const [files] = await bucket.getFiles(); for (const f of files) { const [m] = await f.getMetadata(); if (m.id === targetId) return f; }
Works, but requires listing every object + extra round-trips.
- Storing custom metadata: You could save your own “id” in
metadata.customand index it in Firestore, but that duplicates what the server already knows, and still needs a separate database lookup.
Additional context
- This feature is especially important for multi-tenant or large-scale apps where buckets routinely hit thousands of files.
- Without it, reverse-lookup patterns become a maintenance burden and performance bottleneck.
- Screenshot of current workaround and templates attached.
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.7k
- Forks
- 419
- Merge medio
- 4 d 20 h
- PR fusionados (30 d)
- 16
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de firebase/firebase-admin-node
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
firebase/firebase-admin-node#3234 ·
-
firebase/firebase-admin-node#3221 · 3 comentarios · 1 asignado ·
-
api: messaging
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
firebase/firebase-admin-node#3215 ·
-
api: messaging
Dificultad 5/5 Más de una semana Aptitud para principiantes 28/100
firebase/firebase-admin-node#3214 ·
-
api: firestore type: feature request
firebase/firebase-admin-node#3183 · 1 comentario · 1 asignado ·
Todos los issues de firebase/firebase-admin-node
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
mksglu/context-mode#1200 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
anthropics/claude-code#96687 ·
-
good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
AOSSIE-Org/DebateAI#582 · 2 comentarios ·