Saltar al contenido

Secuela: actualizar el registro y devolver el resultado

Por fin luego de tanto trabajar pudimos encontrar la solución de este asunto que tantos usuarios de nuestro espacio tienen. Si tienes algún detalle que aportar no dudes en compartir tu información.

Solución:

Esto es lo que creo que estás buscando.

db.connections.update(
  user: data.username,
  chatroomID: data.chatroomID
, 
  where:  socketID: socket.id ,
  returning: true,
  plain: true
)
.then(function (result) 
  console.log(result);   
  // result = [x] or [x, y]
  // [x] if you're not using Postgres
  // [x, y] if you are using Postgres
);

De Sequelize docs: La promesa devuelve un array con uno o dos elementos. el primer elemento x es siempre el número de filas afectadas, mientras que el segundo elemento y son las filas afectadas reales (solo se admiten en postgres con options.returning ajustado a true.)

Suponiendo que está utilizando Postgres, puede acceder al objeto actualizado con result[1].dataValues.

debes configurar returning: true opción para decirle a Sequelize que devuelva el objeto. Y plain: true es solo para devolver el objeto en sí y no los otros metadatos desordenados que podrían no ser útiles.

Simplemente puede encontrar el elemento y actualizar sus propiedades y luego guardarlo. El save () da como resultado una consulta de ACTUALIZACIÓN a la base de datos

const job = await Job.findOne(where: id, ownerId: req.user.id);
if (!job) 
    throw Error(`Job not updated. id: $id`);


job.name = input.name;
job.payload = input.payload;
await job.save();

En Postgres:

Executing (default): UPDATE "jobs" SET "payload"=$1,"updatedAt"=$2 WHERE "id" = $3

La función de actualización de la secuencia devuelve una cantidad de filas afectadas (primer parámetro del resultado array).

Debe llamar a find para obtener una fila actualizada

models.People.update(OwnerId: peopleInfo.newuser,
    where: id: peopleInfo.scenario.id)
    .then(() => return models.People.findById(peopleInfo.scenario.id))
    .then((user) => response(user).code(200))
    .catch((err) => 
         request.server.log(['error'], err.stack);
      );

Comentarios y puntuaciones

Si piensas que ha sido de provecho nuestro artículo, te agradeceríamos que lo compartas con otros seniors así contrubuyes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *