2017-04-12 1 views
0

Sail L'association Many-to-many renvoie des erreurs lors de la sauvegarde après l'ajout d'un objet associé. Voici ma modélisation.Ajout d'un enregistrement à un objet associé jette et erreur Voiles Waterline de type many-to-many

User: 

module.exports = { 
    attributes: { 
    ... 
    operations: { 
     collection: 'operation', 
     via: 'users' 
    } 
    } 
}; 
opérations

:

module.exports = { 
    attributes: { 
    ... 
    users: { 
     collection: 'users', 
     via: 'operations', 
    } 
    } 
}; 

sur le contrôleur de mon utilisateur, j'ai:

addPermissionToUsers: function(req, res) { 
     Users.findOne(2).populate('operations').exec(function (err, user) { 

      if (err) throw err// handle error 
       // Queue up a record to be inserted into the join table 
       user.operations.add(1); 
      Save the user, creating the new associations in the join table 
      user.save(function (err) {  
       if (err) throw err 
        res.json(user) 
      }); 
     }); 
    } 

Voici la trace d'erreur:

  if (err) throw err 
         ^
Error (E_UNKNOWN) :: Encountered an unexpected error 
    at new WLError (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/error/WLError.js:25:15) 
    at /usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/model/lib/defaultMethods/save.js:188:17 
    at /usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:52:16 
    at /usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:550:17 
    at /usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:544:17 
    at _arrayEach (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:85 
+0

Avez-vous aussi un modèle 'Users'? – Sangharsh

+0

Oui, j'ai un utilisateur. –

+0

Pas 'User', avez-vous un modèle' Users'? Cette ligne ('collection: 'users',') fait référence au modèle 'Users' au lieu de' User'. – Sangharsh

Répondre

0

Oh mon Dieu !! Pour toute personne confrontée à ce problème, vous devez simplement effectuer une migration afin que les voiles puissent créer automatiquement la table commune pour vous. Pour moi, j'ai changé le config/model.js migrate: 'drop' et les voiles ont ajouté la table commune et cela fonctionne comme le charme.