`serverTimestamp()` 未正确更新,而其他数据偶尔会正确写入

问题描述 投票:0回答:1

当用户想要与专家联系时,他们提交以下格式的数据。

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

还有其他人遇到过这个问题吗?我真的希望得到一些帮助!

reactjs firebase google-cloud-firestore async-await
1个回答
0
投票

您可以使用

firebase.firestore.TimeStamp.now().toDate()
来获得类似的结果。

https://firebase.google.com/docs/reference/js/v8/firebase.firestore.Timestamp

最终结果将如下所示

2024-09-25T06:50:47.426Z

© www.soinside.com 2019 - 2024. All rights reserved.