我只想从Firebase函数中访问我的Firestore数据库。我试图遵循所有文档和其他堆栈溢出问题,但仍然无法正常工作。这是我的代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.test = functions.https.onRequest((request, response) => {
admin
.firestore()
.collection('users')
.get()
.then(querySnapshot => {
const arrUsers = querySnapshot.map(element => element.data());
return response.send(arrUsers);
}).catch((error) => {
// It is coming in here, and this below just returns '{}'
response.send(error);
});
});
我在做什么错了?
答案 0 :(得分:4)
CollectionReference
的{{3}}方法返回一个get()
,其中“包含零个或多个代表查询结果的QuerySnapshot
对象。文档可以作为通过docs
属性数组或使用forEach()
方法枚举”。
因此,您应该执行以下操作,在map()
上调用querySnapshot.docs
:
exports.test = functions.https.onRequest((request, response) => {
admin
.firestore()
.collection('users')
.get()
.then(querySnapshot => {
const arrUsers = querySnapshot.docs.map(element => element.data());
//return response.send(arrUsers); //You don't need to use return for an HTTPS Cloud Function
response.send(arrUsers); //Just use response.send()
}).catch(error => {
//response.send(error);
response.status(500).send(error) //use status(500) here
});
});
请注意对用于返回响应和处理错误的代码所做的更改。我建议您观看有关HTTPS Cloud Functions的Firebase官方视频:DocumentSnapshot
,这是必须的!