错误:WHERE 参数“id”在 Nodejs 上具有无效的“未定义”值"/>
错误:WHERE 参数“id”在 Nodejs 上具有无效的“未定义”值
我试图创建一个带条纹的订阅计划,然后当我尝试查看代码是否适用于邮递员时,它给了我这个错误“错误:创建订阅失败:WHERE 参数“id”具有无效的“未定义”值”条带控制器代码上有错误,我已经在 console.log 中记录了“user_id”,它给了我 undefined
这是条纹控制器:
require('dotenv').config();
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const { Suscribers, Users } = require('../db');
const createSubscription = async (subscriptionData) => {
const { user_id, plan_id, payment_method, subscription_type } = subscriptionData;
try {
const user = await Users.findOne({ where: { id: user_id } });
if (!user) {
throw new Error(`User with ID ${user_id} not found`);
}
const customer = await stripe.customers.create({
email: user.email,
payment_method: payment_method,
invoice_settings: {
default_payment_method: payment_method,
},
});
const subscription = await stripe.subscriptions.create({
customer: customer.id,
items: [{ plan: plan_id }],
metadata: {
subscription_type: subscription_type // agregar el tipo de suscripción como metadato
},
expand: ["latest_invoice.payment_intent"],
});
const paymentIntent = subscription.latest_invoice.payment_intent;
const paymentIntentStatus = paymentIntent.status;
const amount = subscription.plan.amount / 100;
if (paymentIntentStatus === "succeeded") {
const subscriber = await Suscribers.create({
stripe_id: subscription.id,
plan: subscription.plan.name.toLowerCase(),
status: subscription.status,
trial_start: subscription.trial_start,
trial_end: subscription.trial_end,
current_period_start: subscription.current_period_start,
current_period_end: subscription.current_period_end,
UserId: user.id
});
return { subscription, amount, subscriber };
} else {
throw new Error(`Payment status for subscription ${subscription.id} is ${paymentIntentStatus}`);
}
} catch (error) {
console.error(error);
throw new Error(`Failed to create subscription: ${error.message}`);
}
};
module.exports = { createSubscription };
这是我在邮递员身上使用的路线:
require('dotenv').config(); // Importar configuración de variables de entorno con dotenv
const { Multimedia } = require('../db.js');
const authMiddleware = require('../controllers/authMiddleware.js');
const { Router } = require('express');
const router = Router();
const multer = require('multer');
const cloudinary = require('cloudinary').v2;
const { createSubscription } = require('../controllers/stripe.js');
// Configuración de Cloudinary
cloudinary.config({
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
});
// Configuración de Multer
const upload = multer({ dest: 'uploads/' });
router.post('/', authMiddleware, upload.single('file'), createSubscription, async (req, res) => {
try {
const { type } = req.body;
const file = req.file;
if (!file) {
return res.status(400).json({ message: 'You did not send any file' });
}
if (type !== 'photo' && type !== 'video') {
return res.status(400).json({ message: 'The file is not valid' });
}
const result = await cloudinary.uploader.upload(file.path, {
resource_type: type === 'photo' ? 'image' : 'video',
});
const multimedia = await Multimedia.create({
type: type,
url: result.secure_url,
user_id: req.user.id, // usar el ID del usuario autenticado
subscription_type: req.subscription_type, // asignar el tipo de suscripción seleccionado por el usuario
});
res.json({
message: 'You just uploaded a new file!',
multimedia,
});
} catch (error) {
console.error(error);
res.status(500).json({ message: `Server error: ${error.message}` });
}
});
module.exports = router;
回答如下:
更多推荐
错误:WHERE 参数“id”在 Nodejs 上具有无效的“未定义”值
发布评论