无法通过 React.js 在 firebase 上使用 uuid 上传 id

Cannot upload id by using uuid on firebase with React.js

这是我在 JS 上的功能,问题是使用 .ref('posts/${id}')

uuid 会像下面的照片一样保存为文本

根据照片 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");
          });
      }
    );
  };

这段代码中的${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)

或者使用 Firebase 的 child() 函数:

const uploadTask = storage
  .ref('posts').child(id)