Tengo este fragmento de código (el controlador de errores se toma de los documentos de prisma ):
try { prisma.daRevisionare.create({ data: { "idTweet": tweet.id, "testo": testotweet, url } }).then((dati) => { bot.sendMessage(chatId, testotweet, { "reply_markup": { "inline_keyboard": [[{ "text": "Aggiungi", "callback_data": `si,${dati.id}` }], [{ "text": "Scarta", "callback_data": `no,${dati.id}` }]] } }) }) } catch (e) { if (e instanceof Prisma.PrismaClientKnownRequestError) { if (e.code === 'P2002') { console.log( 'There is a unique constraint violation, a new user cannot be created with this email' ) } } }En teoría, el bloque try/catch debería evitar que la aplicación se bloquee cuando se viola una restricción única, pero cuando intento activar el error, la aplicación simplemente se bloquea:
45 try { → 46 prisma.daRevisionare.create( Unique constraint failed on the constraint: `daRevisionare_idTweet_key` at cb (/Users/lorenzo/Desktop/anti-nft/Gen/bot_telegram/node_modules/@prisma/client/runtime/index.js:38703:17) at async PrismaClient._request (/Users/lorenzo/Desktop/anti-nft/Gen/bot_telegram/node_modules/@prisma/client/runtime/index.js:40853:18) { code: 'P2002', clientVersion: '3.9.1', meta: { target: 'daRevisionare_idTweet_key' } }parece ignorar por completo el bloque try/catch, ¿cómo puedo resolver esto?
try/catch solo funciona con código síncrono, o con código asíncrono que usa await , olvidó usar await allí:
try { await prisma.daRevisionare.create(...) } Si prefiere usar promesas, puede usar el método de catch de promesa en lugar de try/catch :
prisma.daRevisionare.create(...).then(...).catch(e => { if (e instanceof Prisma.PrismaClientKnownRequestError) { if (e.code === 'P2002') { console.log( 'There is a unique constraint violation, a new user cannot be created with this email' ) } } })