如何使用firebase云函数从http请求获取数据?

如何使用firebase云函数从http请求获取数据?,firebase,ionic-framework,google-cloud-firestore,httprequest,Firebase,Ionic Framework,Google Cloud Firestore,Httprequest,我创建了一个firebase函数,在云中这些东西是存在的,在代码中我返回这些东西,但是当我尝试在http请求中获取数据时,不收取任何费用。 这是我在firebase函数中的函数: exports.autentifyuser=functions.https.onRequest((req,res)=>{ var=[]; var db=admin.firestore(); const key=req.query.ids; db.collection(“/usuarisdinny/”)。其中(“key”

我创建了一个firebase函数,在云中这些东西是存在的,在代码中我返回这些东西,但是当我尝试在http请求中获取数据时,不收取任何费用。 这是我在firebase函数中的函数:

exports.autentifyuser=functions.https.onRequest((req,res)=>{
var=[];
var db=admin.firestore();
const key=req.query.ids;
db.collection(“/usuarisdinny/”)。其中(“key”,“key=”,key)。get()。然后(快照=>{
snapshot.forEach(doc=>{
var newelement={
“id”:文件id,
“nombre”:doc.data().nombre,
“foto”:doc.data().foto,
“description”:doc.data().description,
“edad”:doc.data().edad,
“键”:doc.data().key,
“sexo”:doc.data().sexo,
“telefono”:doc.data().telefono,
“tipo”:单据数据().tipo
}
stuff=stuff.concat(新元素);
});
console.log(stuff);
res.send(stuff);
归还物品;
}).catch(原因=>{
res.send(原因);
控制台日志(原因);
返回原因;
})
});
这是电话:

let-params:URLSearchParams=new-URLSearchParams();
参数集('ids',this.ids);
让requestOptions=newrequestoptions();
requestOptions.search=params;
this.http.get('https://us-central1-dinnyud-9b9c8.cloudfunctions.net/autentifyuser然后(response=>console.log(response.json())&&this.navCtrl.push(TabsControllerPage)&&loader.disclose())
.catch(错误=>alert2.present()&&loader.disease());

我需要
response.json()
并获取“Tipo”数据。谢谢您的帮助。

因为从数据库获取数据的调用是异步进行的,所以您需要告诉云函数您还没有完成。否则,它可能会在最后一个
}
执行完毕后立即终止您的函数,这远远早于从Firestore检索数据

要告诉云函数这一点,您必须返回一个承诺。幸运的是,这很容易,因为
get
已经返回了一个承诺

return db.collection("/usuariosdinny/").where("key","==",key).get().then(snapshot => {

    snapshot.forEach(doc => {

因为从数据库获取数据的调用是异步进行的,所以您需要告诉云函数您还没有完成。否则,它可能会在最后一个
}
执行完毕后立即终止您的函数,这远远早于从Firestore检索数据

要告诉云函数这一点,您必须返回一个承诺。幸运的是,这很容易,因为
get
已经返回了一个承诺

return db.collection("/usuariosdinny/").where("key","==",key).get().then(snapshot => {

    snapshot.forEach(doc => {

这现在已经实现了,但是我需要对数据this.http.get('&&this.navCtrl.push(TabsControllerPage)&&loader.disease()).catch(error=>alert2.present()&&loader.disease())收费;这现在已经实现了,但是我需要对数据this.http.get('&&this.navCtrl.push(TabsControllerPage)&&loader.disease()).catch(error=>alert2.present()&&loader.disease())收费;