gpt4 book ai didi

firebase - 如何在Cloud Function中从Firestore获取数据?

转载 作者:行者123 更新时间:2023-12-02 03:26:01 24 4
gpt4 key购买 nike

我需要知道我在这里做错了什么?

我从 Flutter 调用这个函数。回调正确完成,第一个和第二个打印将出现在 Firbase 上的“日志”中。但从“Firestore”中获取未定义!!

这是云函数中的代码:

var functions = require("firebase-functions");
let admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
admin.firestore().settings({ timestampsInSnapshots: true });


exports.storeContact5 = functions.https.onCall((data, context) => {
// First print is working fine
console.log('test');
var recieverId = 'WqHxLoYvRxR9UK8sFJZ9WxTOIE32';
const check = admin.firestore().collection('users').doc(recieverId).get();
check.then(testValue => {
console.log(testValue.data.nickname);
return true;
}).catch(err => {
console.log('Error getting document', err);
});
console.log('test2');
// Return to flutter App (Working fine)
return {
repeat_message: 'ok!'
}
});

Firebase 日志屏幕截图

enter image description here

最佳答案

您应该执行 testValue.data().nickname 而不是 testValue.data.nickname,请参阅 https://firebase.google.com/docs/firestore/query-data/get-data#get_a_documenthttps://firebase.google.com/docs/reference/js/firebase.firestore.DocumentSnapshot#data .

此外,如果您想返回异步操作的结果,您应该只返回一次结果,并且不应该在 .then() 之外返回。

此外,请参阅此处如何处理错误:https://firebase.google.com/docs/functions/callable#handle_errors

所以你可以这样做:

exports.storeContact5 = functions.https.onCall((data, context) => {
// First print is working fine
console.log('test');
var recieverId = 'WqHxLoYvRxR9UK8sFJZ9WxTOIE32';
const check = admin.firestore().collection('users').doc(recieverId).get();
return check.then(testValue => {
console.log(testValue.data().nickname);
return {repeat_message: 'ok!'};
}).catch(err => {
console.log('Error getting document', err);
throw new functions.https.HttpsError('Error getting document', err);
});
});

我建议你观看官方系列的视频:https://firebase.google.com/docs/functions/video-series/ ,特别是标题为“学习 JavaScript Promises”的内容

关于firebase - 如何在Cloud Function中从Firestore获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53399870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com