我正在执行一些Prisma请求,并且发现某些Promise不能正常工作。
我知道我可以使用async-await,但这应该可以工作。
prisma
.user({ uid })
.then(user => {
if (Object.keys(user).length) throw 'error!'
return prisma.updateUser({
data: { money: user.money - 50 },
where: { id: user.id }
})
})
.then(user => {
prisma
.createLog({
user: { connect: { id: user.id } },
type: 'TICKET_BOUGHT',
date: new Date()
})
.then(() => console.log('Ticket bought'))
})
.catch(error => console.error(error))
如果该用户不存在,则应该抛出一个错误,而是运行第二个“ then”。
答案 0 :(得分:1)
尝试一下:
if (!Object.keys(user).length) throw 'error!'
答案 1 :(得分:0)
if (Object.keys(user).length) throw 'error!'
表示用户是否存在,因为object.keys
函数将返回对象键.length
的数组列表,检查数组长度,
那么如果用户存在? Object.keys将返回用户属性的数组列表,这意味着长度将大于零,并且如果条件为true则将运行throw,
如果用户不存在,Object.keys
将返回零,而if(0)
等于false,因此不会运行
在您的情况下,您应该检查if( ! Object.keys(user).length )
或if( Object.keys(user).length === 0 )
,或者可以检查if( !user || user == {} )
或if( !user || !user.uid)
而不是uid,可以将其更改为任何必需的属性,并且可以确定在所有情况下,此属性都会返回100%