如何在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
相关产品推荐
相关产品推荐

