Búsqueda de sitios web

mysql - Drizzle ORM no soporta Insert Returning


Tengo una pregunta mientras trabajo con Drizzle ORM y MySQL.

Actualmente, Drizzle ORM no proporciona una función de inserción con retorno para MySQL. Consulta este enlace.

Mi sitio web agrega usuarios a la base de datos y emite tokens JWT cuando se registran. Dado que la carga útil del JWT debe incluir el id del usuario recién agregado, es esencial conocer el id del usuario que acaba de ser agregado.

En este caso, ¿cómo obtengo el id que es un número entero autoincremental para el registro que agregué?

Respuesta #1

Drizzle ORM no admite la función returning para MySQL, pero sí tiene una manera de darte el ID autoincremental usando la propiedad insertId

Ejemplo:

const userTable = await db.insert(user).values({ name: "Jorge"})


const walletTable = await db.insert(wallet).values({ userId: userTable.insertId)

Respuesta #2

Según los Documentos de Drizzle

await db.insert(users).values({ name: "Dan" }).returning();

// partial return
await db.insert(users).values({ name: "Partial Dan" }).returning({ insertedId: users.id });

Esto devolverá un arreglo de filas insertadas. Para obtener un solo valor, podrías:

const newUser = await db.insert(users).values({ name: "Partial Dan" }).returning({ insertedId: users.id });

return newUser[0];

EDITAR: Esto es para PostgreSQL y SQLite y NO ESTÁ SOPORTADO en MySQL. Disculpas, ya que lo pasé por alto antes.

Artículos relacionados