如何在Strapi的afterCreate钩子中修改字段值存储Stripe返回ID
你的代码没有生效的核心原因是:afterCreate生命周期钩子中仅修改了内存中的result对象,没有执行数据库持久化操作,改动不会同步到Strapi的存储中。
Strapi v3 修正代码
module.exports = { lifecycles: { async afterCreate(result) { const product = await stripe.products.create({ name: result.title, }); // 新增数据库更新逻辑,注意替换query参数为你自己的内容类型标识 await strapi.query('product').update( { id: result.id }, { StripeId: product.id } ); }, }, };
Strapi v4 修正代码
Strapi v4对生命周期和查询API做了调整,使用以下代码:
module.exports = { async afterCreate(event) { const { result } = event; const product = await stripe.products.create({ name: result.title, }); // 注意替换第一个参数为你自己的内容类型API标识 await strapi.entityService.update('api::product.product', result.id, { data: { StripeId: product.id } }); } };
注意事项
- 请提前确认Strapi的产品内容类型中已经创建了
StripeId字段,字段类型选择文本即可 - 代码中的内容类型标识需要和你自己创建的产品类型的唯一标识保持一致
- 确保当前文件已经正确引入了初始化完成的Stripe SDK实例
内容的提问来源于stack exchange,提问作者Marko
相关产品推荐
相关产品推荐

