尝试使用 firebase 将时间戳添加到社交媒体网络应用程序的评论部分时出错

Error when trying to add timestamps to comment section for social media web app using firebase

在我的社交媒体网络应用程序上尝试为用户的评论系统设置时间戳时出现错误:

"TypeError: firebase__WEBPACK_IMPORTED_MODULE_4__["default"].firestore.FieldValue.serverTimeStamp 不是函数。(在 'firebase__WEBPACK_IMPORTED_MODULE_4__["default"].firestore.FieldValue.serverTimeStamp()' 中,'firebase__WEBPACK_IMPORTED_MODULE_4__["default"].firestore.FieldValue.serverTimeStamp' 未定义)"=12= ]

这是错误来源的代码部分:

    const postComment = (event) => {
    event.preventDefault();

    db.collection("posts").doc(postId).collection("comments").add({
        text: comment,
        username: username.displayName,
        timestamp: firebase.firestore.FieldValue.serverTimeStamp(),
    });
    setComment('');
}

如果有人能提供帮助,我将不胜感激。

截图:

![截图] (https://cdn.glitch.com/0f2dd307-0d28-4fe9-9ef9-db84277033dd%2FScreenshot%202021-07-18%20at%2011.36.14.png?v=1626604625641)

它是“serverTimestamp()”,没有大写字母 S.. 但如果这不是问题,请尝试在您的 firebase.js 或您初始化 firebase 应用程序的任何地方导入 serverTimestamp

用户名字段无效,是因为在firebase中没有用户名,它是displayName,它在用户对象中而不是用户名对象中

const postComment = (event) => {
    event.preventDefault();

    db.collection("posts").doc(postId).collection("comments").add({
        text: comment,
        username: user.displayName,
        timestamp: firebase.firestore.FieldValue.serverTimestamp(),
    });
    setComment('');
}

首先,有一个错字。是 serverTimestamp 而不是 serverTimeStamp

此外,firebase.js 文件(在屏幕截图中可见)是您初始化 Firebase 的地方,然后我会说从那里导出时间戳本身,如 .

import firebase from "firebase/app"
import "firebase/firestore"

const firestore = firebase.firestore()
const serverTimestamp = firebase.firestore.FieldValue.serverTimestamp()

export {firestore, serverTimestamp}

现在您可以直接在任何其他组件中轻松使用 serverTimestamp()

username好像是一个字符串:

db.collection("posts").doc(postId).collection("comments").add({
  text: comment,
  username, //username.displayName,
              ^^^^^^^^^^^^^^^^^^^^ remove this
  timestamp: firebase.firestore.FieldValue.serverTimestamp(),
});