我写了一个Firebase云功能,我想在其中获取每个用户的内部集合,称为“数字”,并从该集合中读取每个文档以进行一些比较。
有什么想法吗?
对于Firebase来说我还很陌生,由于某种原因,数据库导航命令对我来说还不太好。
我尝试了一些命令但没有成功
const snapshot = functions.database.collection('users').collection('numbers').get()
let sfRef = db.collection('users');
sfRef.getCollections().then(collections => {
collections.forEach(collection => {
console.log('Found subcollection with id:', collection.id);
});
});
这是一个松散的云代码基础结构
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
export const prize1 = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
const users = functions.database.ref('/users/numbers')
console.log("")
return null;
});
我觉得我有一个很好的主意,但是语法使我受挫。
用户集合。浏览此处的每个文档,即每个用户。 在每个用户中转到称为数字的集合。 在称为数字的集合中,遍历每个文档并找到数字字段以进行逻辑/比较。
希望这可以帮助您了解我的数据库的订购方式。
答案 0 :(得分:1)
您可以这样尝试:
let usersRef = db.collection('users');
let allUsers = usersRef.get();
.then(userSnapshot => {
userSnapshot.forEach(userDoc => {
userDoc.ref.collection('numbers').get().then(numSnapshot => {
numSnapshot.forEach(numDoc => {
console.log(numDoc.data().numbers);
// here you got your numbers document with the numbers field
});
});
});
})
.catch((error) => {
console.log("Error getting document: ", error);
});
答案 1 :(得分:1)
您不能使用functions
访问数据库。您定义为functions
的目的是构建响应事件的触发器。如果您想从Cloud Firestore获取数据,则应该通过admin
使用Firebase Admin SDK。如果您浏览official samples,这也可能会有所帮助。
我还将指出,您的代码示例似乎在访问Cloud Firestore和实时数据库(这是不同的数据库产品)之间是分开的。您的屏幕截图显示了Firestore,因此请忽略任何用于实时数据库的API。