es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Evento de eliminación “DELETE” de Supabase JS faltante.

Aquí tienes un fragmento de mi código:

const subscription = supabase
            .from(`messages:channel_id=eq.${props.channelId}`)
            .on('INSERT', payload => addMessage(payload.new))
            .on('UPDATE', payload => updateMessage(payload.new))
            .on('DELETE', payload => removeMessage(payload.old))
            .subscribe()

con la tabla messages habilitada para la sincronización en tiempo real y la replicación completa sin RLS habilitado actualmente con fines de prueba.

Sin embargo, solo recibo eventos de UPDATE e INSERT, si elimino una fila en la tabla messages, no sucede nada (no recibo ningún evento al registrar con console.log).

¿Cómo puedo recibir también eventos de DELETE?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para recibir eventos DELETE, es necesario asegurarse de que la tabla messages tenga una clave primaria. Sin una clave primaria, el sistema en tiempo real de Supabase no podrá detectar y notificar adecuadamente a los suscriptores sobre los eventos DELETE.

    Una vez que hayas agregado una clave primaria a la tabla messages, puedes modificar el código de la siguiente manera:

    const subscription = supabase
                .from(`messages:channel_id=eq.${props.channelId}`)
                .on('INSERT', payload => addMessage(payload.new))
                .on('UPDATE', payload => updateMessage(payload.new))
                .on('DELETE', payload => removeMessage(payload.old))
                .subscribe()
    

    Ten en cuenta que el objeto payload pasado a la función removeMessage contendrá el registro eliminado en la propiedad old.

Comments are closed.