如何仅在值非空时添加对象属性?优化Stripe客户创建逻辑
优化Stripe客户创建代码(简洁版)
你可以通过两种简洁方式避免重复代码,实现需求:
方法一:ES6+条件属性扩展
利用扩展运算符和短路求值,直接在metadata对象中动态添加属性:
async createStripeCustomer(user, refferal) { return stripe.customers.create({ email: user.email, metadata: { userId: user.id, ...(refferal && { referral: refferal }) } }); }
当refferal非空时,短路求值会返回{ referral: refferal },通过扩展运算符将其合并进metadata;若refferal为空,这部分会被忽略,metadata仅保留userId。
方法二:先构建metadata对象
先初始化基础metadata,再根据条件添加属性,逻辑更直观:
async createStripeCustomer(user, refferal) { const metadata = { userId: user.id }; if (refferal) { metadata.referral = refferal; } return stripe.customers.create({ email: user.email, metadata }); }
这种写法无需依赖ES6语法,兼容性更好,同时消除了重复的stripe.customers.create调用。
内容的提问来源于stack exchange,提问作者jr00n
相关产品推荐
相关产品推荐

