无法通过 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)
这是我在 JS 上的功能,问题是使用 .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");
});
}
);
};
这段代码中的${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)