Не удается загрузить идентификатор с помощью uuid на firebase с React.js

# #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");
          });
      }
    );
  }; 

база огня внутри фото

uuid рабочая проверка фото

Ответ №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)