Tengo el siguiente código para acceder al administrador secreto
export interface ConfigData { dbname:string; dbuser:string; }Tengo datos json en un administrador secreto como
{ "dbname" : "dbname", "dbuser" : "dbuser" }función
private static async fetchSecretData(){ let config_key = 'projects/xx/xx/xx/versions/latest'; const client = new SecretManagerServiceClient(); const [version] = await client.accessSecretVersion({name:config_key}) console.log(version.payload?.data ) return version.payload?.data?.toString() as unknown as ConfigData; }Pero necesito lanzar esto como desconocido como ConfigData,
Quiero emitir este ConfigData sin que sea desconocido.
Si no hay una alternativa para hacer esto, entonces cuál es la mejor opción para obtener las claves de este objeto desconocido.
Gracias
Dos comentarios:
toString() devolverá una representación de string de cualquier data , por lo que convertir esto a cualquier otro tipo no funcionará.SecretManagerServiceClient es parte de la API de Google Cloud Secret Manager . No es necesario que proporcione sus propios tipos para ellos, ya que el paquete @google-cloud/secret-manager ya viene con sus propias definiciones de tipo. /** Properties of a SecretPayload. */ interface ISecretPayload { /** SecretPayload data */ data?: (Uint8Array|string|null); } Para mí, no está muy claro qué se supone que son estos data . Si se trata de una cadena JSON, debe analizarla con JSON.parse(version.payload.data) y luego as ConfigData para que TypeScript conozca la forma de la salida. Si es un Uint8Array , primero debe .toString antes de analizarlo con JSON.parse .
Entonces obtendrías algo como:
private static async fetchSecretData() { let config_key = 'projects/xx/xx/xx/versions/latest'; const client = new SecretManagerServiceClient(); const [version] = await client.accessSecretVersion({name:config_key}) if(version?.payload?.data) { return JSON.parse(version.payload.data) as ConfigData } else { return null; } }