我需要知道我在做什么错吗?
我正在从Flutter调用此函数。回调已正确完成,第一和第二个打印记录在Firbase的“日志”中。但是从“ Firestore”中变得不确定!
这是Cloud Function中的代码:
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日志的屏幕截图
答案 0 :(得分:2)
您应该for i in range(3):
globals() ['variable_'+str(i)] = i
print('Variable Value:',eval('variable_'+str(i)))
[Output]:
Variable Value: 0
Variable Value: 1
Variable Value: 2
而不是testValue.data().nickname
,请参见https://firebase.google.com/docs/firestore/query-data/get-data#get_a_document和https://firebase.google.com/docs/reference/js/firebase.firestore.DocumentSnapshot#data。
此外,如果要返回异步操作的结果,则只应返回一次结果,并且不应返回testValue.data.nickname
之外。
此外,请参见此处如何处理错误:https://firebase.google.com/docs/functions/callable#handle_errors
因此,您可以执行以下操作:
.then()
我建议您观看https://firebase.google.com/docs/functions/video-series/官方系列中的视频,尤其是标题为“学习JavaScript承诺”的视频