调用函数后数据返回null
Data returned null after calling function
我想做什么:
我正在支付网关的服务器中下订单(使用 firebase 函数)。
placeorder()
创建订单(这部分有效)
我想要返回已下订单数据的详细信息,function(err,data)
有该数据。
但每次它 returns null.
我试过的:
非常确信这是一个基于 asynchronous execution
的问题,尝试纠正它并且此代码是它的结果,仍然返回数据作为 NULL
const functions = require("firebase-functions");
/* eslint-disable */
exports.order = functions.https.onCall( (amnt, context) => {
var orderdata;
const Ippopay = require('node-ippopay');
var ippopay_instance = new Ippopay({
public_key: 'pk_live_0WZhCNC5l7PJ',
secret_key: 'my secret key',
});
async function placeorder(){
ippopay_instance.createOrder({
amount: amnt,
currency: 'INR',
payment_modes: "cc,dc,nb,upi",
customer: {
name: "Test",
email: "test@gmail.com",
phone: {
country_code: "91",
national_number: "9876543210"
}
}
},
function (err, data) {
if (err) {
console.log(err);
return;
}
orderdata= JSON.parse(data);
}) ;
}
async function orderdatareturn() {
console.log('before promise call')
// Await for the placeorderdata() to complete
let result =await placeorder();
return result;
};
return orderdatareturn();
});
我要做的第一件事是“承诺”ippopay 的回调式入口点api...
const Ippopay = require('node-ippopay');
const ippopay_instance = new Ippopay({
public_key: 'public key',
secret_key: 'secret key',
});
// call ippopay api to createOrder and resolve with the JSON result parsed
async function placeorder(params) {
return new Promise((resolve, reject) => {
ippopay_instance.createOrder(params, (error, data) => {
if (error) reject(error);
else resolve(JSON.parse(data));
})
});
}
现在导出的函数可以简单明了。关键是在返回之前等待承诺解决...
exports.order = functions.https.onCall((amnt, context) => {
const params = { amount: amnt, etc...}
return await placeorder(params);
})
我想做什么:
我正在支付网关的服务器中下订单(使用 firebase 函数)。
placeorder()
创建订单(这部分有效)
我想要返回已下订单数据的详细信息,function(err,data)
有该数据。
但每次它 returns null.
我试过的:
非常确信这是一个基于 asynchronous execution
的问题,尝试纠正它并且此代码是它的结果,仍然返回数据作为 NULL
const functions = require("firebase-functions");
/* eslint-disable */
exports.order = functions.https.onCall( (amnt, context) => {
var orderdata;
const Ippopay = require('node-ippopay');
var ippopay_instance = new Ippopay({
public_key: 'pk_live_0WZhCNC5l7PJ',
secret_key: 'my secret key',
});
async function placeorder(){
ippopay_instance.createOrder({
amount: amnt,
currency: 'INR',
payment_modes: "cc,dc,nb,upi",
customer: {
name: "Test",
email: "test@gmail.com",
phone: {
country_code: "91",
national_number: "9876543210"
}
}
},
function (err, data) {
if (err) {
console.log(err);
return;
}
orderdata= JSON.parse(data);
}) ;
}
async function orderdatareturn() {
console.log('before promise call')
// Await for the placeorderdata() to complete
let result =await placeorder();
return result;
};
return orderdatareturn();
});
我要做的第一件事是“承诺”ippopay 的回调式入口点api...
const Ippopay = require('node-ippopay');
const ippopay_instance = new Ippopay({
public_key: 'public key',
secret_key: 'secret key',
});
// call ippopay api to createOrder and resolve with the JSON result parsed
async function placeorder(params) {
return new Promise((resolve, reject) => {
ippopay_instance.createOrder(params, (error, data) => {
if (error) reject(error);
else resolve(JSON.parse(data));
})
});
}
现在导出的函数可以简单明了。关键是在返回之前等待承诺解决...
exports.order = functions.https.onCall((amnt, context) => {
const params = { amount: amnt, etc...}
return await placeorder(params);
})