Aquí está mi función en JS, el problema es que uuid se guardaría como texto como las fotos a continuación usando .ref('posts/${id}')
De acuerdo con la foto 3, el uuid funciona correctamente, por lo que supongo que hay algunos errores de código simples en mi "sendPost".
Si eres bueno en JS y este tipo de problemas, te agradecería que lo indiques.
import { v4 as uuid } from 'uuid'; const sendPost = () => { const id = uuid(); const uploadTask = storage // eslint-disable-next-line no-template-curly-in-string .ref('posts/${id}') .putString(cameraImage, "data_url"); uploadTask.on( "state_changed", null, (error) => { //error func console.log(error); }, () => { //Complete func storage .ref("posts") .child(id) .getDownloadURL() .then((url) => { db.collection("posts").add({ imageUrl: url, username: "TEST", read: false, //profile picture timstamp: firebase.firestore.FieldValue.serverTimestamp(), }); history.replace("/chats"); }); } ); };Este ${id} en este código es solo una cadena:
const uploadTask = storage // eslint-disable-next-line no-template-curly-in-string .ref('posts/${id}') El no-template-curly-in-string en realidad dice exactamente lo que está pasando: una cadena en '' no puede contener las llamadas variables de plantilla como {$id} . O bueno, puede contener esa cadena, pero JavaScript no la reemplazará con el valor de id .
Si desea que ${id} se interprete como el valor de la variable id , utilice acentos graves alrededor de la cadena en lugar de comillas:
const uploadTask = storage .ref(`posts/${id}`)Alternativamente, puede usar la concatenación de cadenas clásica:
const uploadTask = storage .ref('posts/'+id) O usa la función child() de Firebase:
const uploadTask = storage .ref('posts').child(id)