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

如何使用addDoc在Firestore中将category字段存储为reference类型?

解决Firestore中category字段存为Map而非Reference的问题

要把transactions集合的category字段存为Reference类型,核心是直接传入Firestore的文档引用对象,而不是普通JS对象。修改方法如下:

1. 调整类型定义

首先把Transaction类型里的category从空对象改成Firestore的DocumentReference类型:

import { DocumentReference } from "firebase/firestore";

interface Transaction {
  category: DocumentReference;
  description: string;
  date: string;
  price: number;
  userId: string | null;
}

// 初始化时临时设为兼容类型,后续赋值实际引用
const transaction = { 
  category: null as unknown as DocumentReference, 
  description: "", 
  date: "", 
  price: 0, 
  userId: null
} as Transaction;

2. 修改addDoc代码

假设你的selectedOption包含categories集合中文档的ID(比如selectedOption.id),用Firestore的doc()函数生成文档引用,替换原来的对象展开逻辑:

import { doc, addDoc, collection } from "firebase/firestore";

await addDoc(collection(db, "transactions"), {
  ...inputValues,
  // 生成指向categories对应文档的引用
  category: doc(db, "categories", selectedOption.id),
  userId: user?.uid,
});

关键注意点

  • 必须保证selectedOption.id是categories集合中已存在文档的ID,否则会生成无效引用
  • 存为Reference后,后续查询时可通过getDoc()方法获取关联的分类文档数据

内容的提问来源于stack exchange,提问作者Ayhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:55:12