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.

¿Cómo actualizo un modelo de Sequelize con una asociación?

Estoy tratando de actualizar un modelo sequelize (llamado conversación) cada vez que inserto un valor en su asociación (llamada mensaje). El modelo de conversación no se actualiza automáticamente y no he encontrado información útil en la documentación.

“`const router = require (“express”). Router ();
const {Conversacion, Mensaje} = require ("../../db/models");
const onlineUsers = require ("../../onlineUsers");

// espera {recipientId, text, conversationId} en el cuerpo (conversationId será nulo si aún no existe conversación)
router.post ("/", async (req, res, next) => {
try {
if (!req.user) {
return res.sendStatus (401);
}
const senderId = req.user.id;
const {recipientId, text, conversationId, sender} = req.body;

<pre><code>// si ya conocemos el ID de la conversación, podemos ahorrar tiempo y simplemente agregarlo al mensaje y devolverlo
if (conversationId) {
const message = await Mensaje.create ({senderId, text, conversationId});
Conversacion.update ({})
return res.json ({message, sender});
}
// si no tenemos el ID de conversación, buscamos una conversación para asegurarnos de que aún no exista
let conversacion = await Conversacion.findConversation (
senderId,
recipientId
);

if (!conversacion) {
// crea la conversación
conversacion = await Conversacion.create ({
user1Id: senderId,
user2Id: recipientId,
});
if (onlineUsers.includes (sender.id)) {
sender.online = true;
}
}
const message = await Mensaje.create ({
senderId,
text,
conversationId: conversation.id,
});
res.json ({message, sender});
</code></pre>

}
catch (error) {
next (error);
}
});

module.exports = router;“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puede actualizar el modelo de conversación cada vez que inserta un valor en su asociación utilizando el método Conversation.update(). Por ejemplo, puede utilizar el siguiente código:

    if (conversationId) {
      const message = await Message.create({ senderId, text, conversationId });
      Conversation.update({ })
      return res.json({ message, sender });
    }
    

Comments are closed.