如何将此 Firebase 版本 8 语法更改为版本 9?

How do I changed this Firebase version 8 syntax to version 9?

这是我最初用于将文档添加到子集合“posts”的语法。但我认为 firebase 版本 9 不支持它

const unsubscribe = db.collection("users").doc(firebase.auth().currentUser.email).collection("posts").add({
  imageUrl: currentLoggedInUser.unsername,
  user: CurrentLoggedInUser.username,
  profile_picture: CurrentLoggedInUser.profilePicture,
  owner_uid: auth.currentUser.uid,
  caption: caption,
  createdAt: serverTimestamp(),
  likes: 0,
  likes_by_users: [],
  comments: [],
}).then(() => navigation.navigate('HomeScreen'))
return unsubscribe

我试过的

const unsubscribe = (doc(collection(db, "users")), auth.currentUser.email, addDoc(collection("posts"), {
  imageUrl: imageUrl,
  user: CurrentLoggedInUser.username,
  profile_picture: CurrentLoggedInUser.profilePicture,
  owner_uid: auth.currentUser.uid,
  caption: caption,
  createdAt: serverTimestamp(),
  likes: 0,
  likes_by_users: [],
  comments: [],
}).then(() => navigation.navigate('HomeScreen'))
return unsubscribe

如果您将其中一些操作的结果捕获到一个有意义的命名变量中,事情就会变得更加可读。

const usersRef = collection(db, "users");
const userRef = doc(usersRef, auth.currentUser.email);
const postsRef = collection(userRef, "posts");
const promise = addDoc(postsRef, {
  imageUrl: imageUrl,
  user: CurrentLoggedInUser.username,
  profile_picture: CurrentLoggedInUser.profilePicture,
  owner_uid: auth.currentUser.uid,
  caption: caption,
  createdAt: serverTimestamp(),
  likes: 0,
  likes_by_users: [],
  comments: [],
});
return promise.then(() => navigation.navigate('HomeScreen'));

一旦上述工作正常,您可以将前三行重写为:

const postsRef = collection(db, "users", auth.currentUser.email, "posts");