You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:55:22