Firebase 云函数错误 - 函数返回未定义、预期的 Promise 或值
Firebase cloud functions error - Function returned undefined, expected Promise or value
我正在尝试在创建新文档时使用 Google Cloud Function 在 Appsflyer 上记录购买事件,但出现此错误。
我所有的插值在我的日志中似乎都很好。
我的功能是
exports.validatePaymentAppsflyer = functions.firestore.document('_orderFinishedSuccessfully/{id}').onCreate((snap, context) => {
console.log(snap, context);
const newValue = snap.data();
const requestData = newValue;
console.log(requestData.platform);
if ( requestData.platform === 'ios' ) {
appId = 'id1303984176';
} else {
appId = 'com.myapp';
}
var request = require("request");
var options = { method: 'POST',
url: 'https://api2.appsflyer.com/inappevent/' + appId,
headers:
{
"authentication": 'M762jn36Bb7kBt70jNdtrU',
'Content-Type': 'application/json'
},
body:
{ appsflyer_id: requestData.appsflyerId,
customer_user_id: requestData.customerUserId,
eventName: 'af_purchase',
eventValue: {
"af_revenue":requestData.totalTTC,
"af_order_id":requestData.orderId,
"af_city":requestData.city,
"af_date_b":requestData.date
},
eventCurrency: 'EUR',
ip: requestData.userIp,
eventTime: requestData.date,
af_events_api: 'true' },
json: true };
console.log(options);
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
});
我需要你的帮助
云函数应该 return 一些有意义的东西,通常你想要 return 一个 Promise
。这样引擎就会知道您的异步操作已经完成,而不必等待超时发生。
要修复您的代码,只需 return a Promise
:
return new Promise((resolve, reject) => {
request(options, function (error, response, body) {
if (error) reject(error);
else resolve(response);
});
});
我正在尝试在创建新文档时使用 Google Cloud Function 在 Appsflyer 上记录购买事件,但出现此错误。
我所有的插值在我的日志中似乎都很好。 我的功能是
exports.validatePaymentAppsflyer = functions.firestore.document('_orderFinishedSuccessfully/{id}').onCreate((snap, context) => {
console.log(snap, context);
const newValue = snap.data();
const requestData = newValue;
console.log(requestData.platform);
if ( requestData.platform === 'ios' ) {
appId = 'id1303984176';
} else {
appId = 'com.myapp';
}
var request = require("request");
var options = { method: 'POST',
url: 'https://api2.appsflyer.com/inappevent/' + appId,
headers:
{
"authentication": 'M762jn36Bb7kBt70jNdtrU',
'Content-Type': 'application/json'
},
body:
{ appsflyer_id: requestData.appsflyerId,
customer_user_id: requestData.customerUserId,
eventName: 'af_purchase',
eventValue: {
"af_revenue":requestData.totalTTC,
"af_order_id":requestData.orderId,
"af_city":requestData.city,
"af_date_b":requestData.date
},
eventCurrency: 'EUR',
ip: requestData.userIp,
eventTime: requestData.date,
af_events_api: 'true' },
json: true };
console.log(options);
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
});
我需要你的帮助
云函数应该 return 一些有意义的东西,通常你想要 return 一个 Promise
。这样引擎就会知道您的异步操作已经完成,而不必等待超时发生。
要修复您的代码,只需 return a Promise
:
return new Promise((resolve, reject) => {
request(options, function (error, response, body) {
if (error) reject(error);
else resolve(response);
});
});