Angular Fire函数正在调用但未运行



我一直在做一个离子项目,我正试图从我的应用程序中直接调用云函数。这个调用开始执行,但不写入我需要编码的文档以写入数据库。我甚至无法判断该函数是否正在运行,因为console.log语句在我的日志控制台上没有给出任何结果。这是我的后端上的云功能代码

exports.usedDevices = functions.https.onCall((data,context)=>{
console.log(data);
console.log(context);
console.log('This started running');
admin.firestore()
.collection('devices/{documentId}')
.get()
.then(val=>{
if(val.empty === false){
val.forEach(function(snapshot): boolean | void{
if(snapshot.data() === data){
return false
}
})
admin.firestore()
.collection('devices')
.add(
data
)
.catch(er=>{
console.log(er);
return er;
}) 
return true
}
else{
admin.firestore()
.collection('devices')
.add(
data
)
.catch(er=>{
console.log(er);
return er;
})
return true
}
})
.catch(er=>{
console.log(er);
return er
})

})

在我的应用程序中,我试着像一样调用这个函数

const uid="This is my uid";
const call = this.aff.httpsCallable('usedDevices');
call(uid).toPromise()
.then(res=>{
console.log(res);
})
.catch(er=>{
console.log(er);
})

我使用一个简单的"This is my uid"字符串来测试我的消息是否到达后端,但仍然没有从后端读取数据

您需要将其作为对象传入:{uid: uid}

这里有一个干净的代码示例:

async getUsedDevice(uid) {
const call = this.aff.httpsCallable('usedDevices');

//                         {uid: uid}   <-- This solves your problem
const results = await call({uid: uid}).toPromise();
return results;
}

我已经把它放在一个async函数中,并将它转换为promiseawaited以供解析。我相信这也是编写代码最干净的方法。👍

尝试在没有"toPromise(("的情况下调用函数

const uid="This is my uid";
const call = this.aff.httpsCallable('usedDevices');
call(uid)
.then(res=>{
console.log(res);
})
.catch(er=>{
console.log(er);
})

相关内容

  • 没有找到相关文章

最新更新