在结帐功能中执行 select 查询
performing select query inside checkout function
我有这个功能,代码如下:
app.post('/create-checkout-session', async (req, res) => {
console.log(req.session.username)
let price = ""
var getUserPaymentData = "select * from INVOICES where USER = '" + req.session.username + "'"
ibmdb.open(ibmdbconnMaster, function(err, conn) {
if (err) return console.log(err);
conn.query(getUserPaymentData, function(err, rows) {
if (err) {
console.log(err);
}
for (var i = 0; i < rows.length; i++) {
console.log("rows of lengths are: " + rows.length)
var price1 = rows[i]["AMOUNTOWED"]
console.log(rows[i]["USER"])
price = parseInt(price1)
console.log(price1)
}
conn.close(function() {
console.log("closed the function /create-checkout-session");
});
});
})
console.log(price)
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
line_items: [
{
price_data: {
currency: 'usd',
product_data: {
name: 'Marcos Swim School Payment',
},
unit_amount: price,
},
quantity: 1,
},
],
mode: 'payment',
success_url: `https://xxx.ca/`,
cancel_url: `https://xxx.ca/cancel`,
});
res.json({ id: session.id });
});
我基本上是在检查用户欠我多少钱,然后重定向到结帐处。但是,它完全跳过查询并且不记录任何内容,然后抛出未定义价格的错误。这是因为我在查询 table 后尝试设置价格。我该如何解决这个问题?
ibmdb.open
是一个使用回调的函数,因此它会立即 returns。如果它支持 async/await,您需要 await
它的结果,或者将其下面的所有代码 - const session = await stripe.checkout.sessions.create()
和 res.json()
调用 - 移动到回调中。
我有这个功能,代码如下:
app.post('/create-checkout-session', async (req, res) => {
console.log(req.session.username)
let price = ""
var getUserPaymentData = "select * from INVOICES where USER = '" + req.session.username + "'"
ibmdb.open(ibmdbconnMaster, function(err, conn) {
if (err) return console.log(err);
conn.query(getUserPaymentData, function(err, rows) {
if (err) {
console.log(err);
}
for (var i = 0; i < rows.length; i++) {
console.log("rows of lengths are: " + rows.length)
var price1 = rows[i]["AMOUNTOWED"]
console.log(rows[i]["USER"])
price = parseInt(price1)
console.log(price1)
}
conn.close(function() {
console.log("closed the function /create-checkout-session");
});
});
})
console.log(price)
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
line_items: [
{
price_data: {
currency: 'usd',
product_data: {
name: 'Marcos Swim School Payment',
},
unit_amount: price,
},
quantity: 1,
},
],
mode: 'payment',
success_url: `https://xxx.ca/`,
cancel_url: `https://xxx.ca/cancel`,
});
res.json({ id: session.id });
});
我基本上是在检查用户欠我多少钱,然后重定向到结帐处。但是,它完全跳过查询并且不记录任何内容,然后抛出未定义价格的错误。这是因为我在查询 table 后尝试设置价格。我该如何解决这个问题?
ibmdb.open
是一个使用回调的函数,因此它会立即 returns。如果它支持 async/await,您需要 await
它的结果,或者将其下面的所有代码 - const session = await stripe.checkout.sessions.create()
和 res.json()
调用 - 移动到回调中。