Sequelize-mettre à jour l'enregistrement, et le résultat de retour

j'utilise sequelize avec MySQL. Par exemple, si je fais:

models.People.update({OwnerId: peopleInfo.newuser},
        {where: {id: peopleInfo.scenario.id}})
        .then(function (result) {
            response(result).code(200);

        }).catch(function (err) {
        request.server.log(['error'], err.stack);
       ).code(200);
    });

Je ne reçois pas d'information si le modèle des gens a été mis à jour avec succès ou pas. Variable result est juste un tableau avec un élément, 0=1

Comment puis-je être certain que le document a été mis à jour ou non.

25
demandé sur Vedran Maricevic. 2016-07-22 14:08:35
la source

2 ответов

voici ce que je pense que vous cherchez.

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
});

À Partir De Sequelize docs: La promesse retourne un tableau avec un ou deux éléments. Le premier élément x est toujours le nombre de lignes affectées, tandis que le deuxième élément y est le nombre de lignes affectées (uniquement pris en charge dans postgres options.returningtrue.)

en supposant que vous utilisez Postgres, vous pouvez accéder à l'objet mis à jour avec result[1].dataValues.

Vous devez définir returning: true option de dire Sequelize pour retourner l'objet. Et plain: true est juste pour retourner l'objet lui-même et pas les autres méta-données qui pourraient ne pas être utiles.

41
répondu nickang 2018-08-30 16:48:20
la source

fonction de mise à jour de sequelize renvoie un certain nombre de lignes affectées (premier paramètre du tableau de résultats).

Vous devriez appeler find pour obtenir la ligne mise à jour

models.People.update({OwnerId: peopleInfo.newuser},
    {where: {id: peopleInfo.scenario.id}})
    .then(function (result) {
      models.People.findById(peopleInfo.scenario.id)
      .then(function(user){
        response(user).code(200);
      }).catch(function (err) {
         request.server.log(['error'], err.stack);
       ).code(200);
      });
    }).catch(function (err) {
    request.server.log(['error'], err.stack);
   ).code(200);
});
6
répondu Tilekbekov Yrysbek 2016-07-25 14:19:10
la source

Autres questions sur