我正在尝试在Firebase函数上使用admin SDK和firestore api检索文档列表。 我尝试使用以下内容:
import * as admin from 'firebase-admin';
const adminFirestore = admin.firestore();
adminFirestore.collection('accounts');
collection.get().then(snapshot => {
snapshot.forEach(doc => {
console.log( doc.data() );
});
});
但是,这不会打印此集合中的单个文档。 我还尝试了以下方法:
const ref = adminDb.ref('accounts');
ref.once("value")
.then(function(snapshot) {
console.log(snapshot);
});
ref.once('value', (snapshot) => {
console.log(snapshot.val());
}).then(something => {
console.log(something);
})
实际上并没有真正打印出collectin中的文档。我所得到的只是对该集合的引用,还不清楚如何接收该集合中的条目。 有什么建议吗?
答案 0 :(得分:2)
您不远!如文档中的here所示,您确实必须使用get()
方法,但问题出在您尚未声明collection
变量。
您应该执行以下操作:
const adminFirestore = admin.firestore();
const collection = adminFirestore.collection('accounts');
collection.get().then(snapshot => {
snapshot.forEach(doc => {
console.log( doc.data() );
});
});
或其他可能性,如下:
const adminFirestore = admin.firestore();
adminFirestore.collection('accounts').get().then(snapshot => {...});
或如下:
admin.firestore().collection('accounts').get().then(snapshot => {...});
请注意,在第二次尝试时,通过执行const ref = adminDb.ref('accounts');
,您实际上将目标定为Realtime Database,这与Cloud Firestore数据库不同(请参阅https://firebase.google.com/docs/reference/node/firebase.database.Database?authuser=0#ref)。它们都是Firebase提供的产品/服务,但有所不同。