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

如何在Firestore中添加包含其他集合文档引用的新文档?

如何在Firestore中存储文档引用而非字符串

嘿,你遇到的问题很常见——直接传字符串路径的话,Firestore只会把它当成普通文本存储,而不会自动识别为文档引用。要解决这个问题,你需要用Firebase Admin SDK提供的db.doc()方法来明确创建文档引用对象,然后把这个对象存入字段中。

修改后的代码示例

var admin = require('firebase-admin');
var serviceAccount = require('./serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://DBURL.firebaseio.com'
});

var db = admin.firestore();

// 用db.doc()创建文档引用,替换原来的字符串路径
db.collection('myFunCollection').add({
  someBool: false,
  someNumber: 13.2,
  video: db.doc('videos/Izdm35CsW6kqv2UxZEX0'),
  user: db.doc('users/pb7La4kzEaBow4iWvmxZ')
});

关键说明

  • db.doc('集合名/文档ID')方法会返回一个DocumentReference类型的对象,Firestore识别到这个类型后,就会把它存储为文档引用,而不是普通字符串。
  • 之后你读取这个文档时,video和user字段会是引用对象,你可以调用get()方法来获取对应的关联文档数据,比如:
    // 示例:读取myFunCollection中的文档并获取关联的user文档
    db.collection('myFunCollection').doc('新文档ID').get()
      .then(doc => {
        const userRef = doc.data().user;
        return userRef.get();
      })
      .then(userDoc => {
        console.log('关联的用户数据:', userDoc.data());
      });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:59:15