我创建了一个firebase函数,在云中存在这些东西,在代码中我返回了这些东西,但是当我尝试在http请求中获取数据时不收取任何费用。 这是我在firebase函数中的功能:
exports.autentifyuser = functions.https.onRequest((req, res) => {
var stuff = [];
var db = admin.firestore();
const key=req.query.ids;
db.collection("/usuariosdinny/").where("key","==",key).get().then(snapshot => {
snapshot.forEach(doc => {
var newelement = {
"id": doc.id,
"nombre": doc.data().nombre,
"foto": doc.data().foto,
"descripcion":doc.data().descripcion,
"edad":doc.data().edad,
"key":doc.data().key,
"sexo":doc.data().sexo,
"telefono":doc.data().telefono,
"tipo":doc.data().tipo
}
stuff = stuff.concat(newelement);
});
console.log(stuff);
res.send(stuff);
return stuff;
}).catch(reason => {
res.send(reason);
console.log(reason);
return reason;
})
});
这是电话:
let params: URLSearchParams = new URLSearchParams();
params.set('ids',this.ids);
let requestOptions = new RequestOptions();
requestOptions.search = params;
this.http.get('https://us-central1-dinnyud-9b9c8.cloudfunctions.net/autentifyuser',requestOptions).toPromise().then(response=>console.log(response.json()) && this.navCtrl.push(TabsControllerPage) && loader.dismiss())
.catch(error=>alert2.present()&& loader.dismiss());
我需要response.json()
并获取“ Tipo”数据。感谢您的帮助。
答案 0 :(得分:1)
由于从数据库获取数据的调用是异步发生的,因此您需要告诉Cloud Functions您尚未完成。否则,它可能会在执行最后一个}
后立即终止您的功能,而这恰好是在从Firestore检索数据之前。
要将此信息告知Cloud Functions,您必须返回一个承诺。幸运的是,这很容易,因为get
已经返回了诺言。
return db.collection("/usuariosdinny/").where("key","==",key).get().then(snapshot => {
snapshot.forEach(doc => {