Firestore:将文档ID添加到自定义类的实现方法
解决方法
其实很简单,你已经在构造函数里留了id参数,但没完成两步关键操作:
- 第一步:在
Merit类的构造函数里,把传入的id赋值给实例属性 - 第二步:在转换器的
fromFirestore方法里,从文档快照中取出ID,传给Merit的构造函数
修改后的完整代码如下:
class Merit { constructor(book, cost, effect, name, page, prereq, style, tags, tldr, id){ this.book = book; this.cost = cost; this.effect = effect; this.name = name; this.page = page; this.prereq = prereq; this.style = style; this.tags = tags; this.tldr = tldr; this.id = id; // 新增:把id绑定到实例上 } } const meritConverter = { fromFirestore: (snapshot, options) => { const data = snapshot.data(options); return new Merit( data.book, data.cost, data.effect, data.name, data.page, data.prereq, data.style, data.tags, data.tldr, snapshot.id // 新增:传入文档ID ); }, };
补充说明:Firestore的文档快照(snapshot)自带id属性,直接取用就是当前文档的ID——文档ID属于文档的元信息,并不存储在文档的字段数据里,所以不能从data()方法返回的对象中获取。
内容的提问来源于stack exchange,提问作者tragic tomato
相关产品推荐
相关产品推荐

