Firestore不支持存储应用程序中可能使用的所有类型的对象。其中一个类型是嵌套数组。因此,当存储这样一个对象时,您需要转换它(例如,使用JSON.stringify),而当您从消防局检索对象时,情况正好相反。虽然这样做有效,但您必须在检索/存储对象的每个地方进行转换。
问题:是否可以连接到从集合到集合的检索/存储,所以只需要提供一次转换函数?
目前使用的是带有React前端的防火墙Web 9。
发布于 2022-03-11 10:40:13
找到了解决办法。Firebase支持用户定义在集合引用的FirestoreDataConverter方法中提供的类型为FirestoreDataConverter的转换器。转换器将同时定义toFirestore方法和fromFirestore方法。
https://firebase.google.com/docs/reference/node/firebase.firestore.FirestoreDataConverter
转换器,
withConverter()用于将T类型的用户对象转换为Firestore数据。
使用转换器可以在存储和检索Firestore中的对象时指定泛型类型参数。
示例
class Post {
constructor(readonly title: string, readonly author: string) {}
toString(): string {
return this.title + ', by ' + this.author;
}
}
const postConverter = {
toFirestore(post: Post): firebase.firestore.DocumentData {
return {title: post.title, author: post.author};
},
fromFirestore(
snapshot: firebase.firestore.QueryDocumentSnapshot,
options: firebase.firestore.SnapshotOptions
): Post {
const data = snapshot.data(options)!;
return new Post(data.title, data.author);
}
};
const postSnap = await firebase.firestore()
.collection('posts')
.withConverter(postConverter)
.doc().get();
const post = postSnap.data();
if (post !== undefined) {
post.title; // string
post.toString(); // Should be defined
post.someNonExistentProperty; // TS error
}https://stackoverflow.com/questions/71235169
复制相似问题