当用户想要与专家联系时,他们提交以下格式的数据。
const handleSubmit = async () => {
const loginState = localStorage.getItem("authenticated");
let uploads = await uploadSelectedFiles();
const saveData = {
// taskName: taskName,
description: description,
loomLink: loomLink,
uploadFiles: uploads,
expertCategories: expertCategories,
post_userid: currentUserUid,
posterRole: myRole,
timestamp: serverTimestamp(),
};
if (loginState == "true") {
setLoader(true);
let newJobId = await writeJobPostToDb(saveData);
console.log(newJobId, "this is a hilarious jobid");
// Get the updated document from Firestore to access the actual timestamp
sendNewJobNotify(newJobId, skillSet, expertCategories);
navigate(`/Portfolio/id=${currentUserUid}/order-history`);
localStorage.removeItem("jobPostData");
} else {
// localStorage.setItem("taskName", JSON.stringify(taskName));
localStorage.setItem(
"expertCategories",
JSON.stringify(expertCategories)
);
//navigate(`/Portfolio/id=${currentUserUid}/order-history`);
localStorage.setItem("jobPostData", JSON.stringify(saveData));
navigate("./register");
}
};
export const writeJobPostToDb = async (data) => {
const docRef = await addDoc(collection(db, "jobpost"), data);
return docRef.id;
};
客户发布他们的要求来寻找专家,这些数据存储在 firestore 中。大多数时候它工作正常,但有时它不能正确记录时间戳。
正常情况下应该是这样的。
timestamp
September 2, 2024 at 10:19:56 AM UTC-7
但有时会看到这个。
timestamp (map)
_methodName: "serverTimestamp" (string)
整个
jobpost
收藏场是这样的。
description: "" (string)
expertCategories: (array)
0 "Nuke" (string)
loomLink: "" (string)
post_userid: "v7mCJl07XLO3kQL6AWC7" (string)
posterRole: ""(string)
timestamp: (map)
_methodName: "serverTimestamp" (string)
uploadFiles
其他字段都可以,但只有时间戳不起作用。 我已经检查了 firestore 规则设置,以及 asyc/await 直到数据库更新并尝试重现上述情况,但我不能。
我使用的是firebase SDK版本
^9.23.0
还有其他人遇到过这个问题吗?我真的希望得到一些帮助!
您可以使用
firebase.firestore.TimeStamp.now().toDate()
来获得类似的结果。
https://firebase.google.com/docs/reference/js/v8/firebase.firestore.Timestamp
最终结果将如下所示
2024-09-25T06:50:47.426Z