# #javascript #reactjs #firebase #uuid
Вопрос:
Вот моя функция на JS, проблема в том, что uuid будет сохранен в виде текста, как на фотографиях ниже, с помощью .ref('posts/${id}')
Согласно фото 3, uuid работает правильно, поэтому я предполагаю, что в моем «sendPost»есть несколько простых ошибок в коде.
Если вы хорошо разбираетесь в JS и такого рода проблемах, то были бы признательны, если бы вы указали.
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");
});
}
);
};
Ответ №1:
Это ${id}
в этом коде просто строка:
const uploadTask = storage
// eslint-disable-next-line no-template-curly-in-string
.ref('posts/${id}')
На самом no-template-curly-in-string
деле говорится именно то, что происходит: строка ''
не может содержать так называемые переменные шаблона, такие как {$id}
. Или хорошо, он может содержать эту строку, но JavaScript не заменит ее значением id
.
Если вы хотите ${id}
, чтобы значение интерпретировалось как значение id
переменной, используйте обратные кавычки вокруг строки вместо кавычек:
const uploadTask = storage
.ref(`posts/${id}`)
В качестве альтернативы вы можете использовать классическую конкатенацию строк:
const uploadTask = storage
.ref('posts/' id)
Или используйте child()
функцию Firebase:
const uploadTask = storage
.ref('posts').child(id)