如果用户不存在,我们是否可以使用条带 API 调用来创建用户,并检索新用户?
说我们这样做:
export const createCustomer = function (email: string) {
return stripe.customers.create({email});
};
Run Code Online (Sandbox Code Playgroud)
即使使用该电子邮件的用户已经存在,它也会始终创建一个新的客户 ID。 是否有一种方法可以仅在条带中不存在用户电子邮件时创建用户?
我只是想避免在同一时间范围内可能发生多个调用的竞争条件stripe.customers.create({email})。例如,我们检查 customer.id 是否存在,不存在,两个不同的服务器请求可能会尝试创建一个新客户。
这是比赛条件:
const email = 'foo@example.com';
Promise.all([
stripe.customers.retrieve(email).then(function(user){
if(!user){
return stripe.customers.create(email);
}
},
stripe.customers.retrieve(email).then(function(user){
if(!user){
return stripe.customers.create(email);
}
}
])
Run Code Online (Sandbox Code Playgroud)
显然,竞争条件更有可能发生在两个不同的进程或两个不同的服务器请求中,而不是同一个服务器请求,但你明白了。