2014-07-24 6 views
6

Ce modèle me donne l'effet que je veux au détriment des données dupliquées et général laideur:champ Sails.js composite unique,

//Example 
var Example = { 
    attributes: { 
     foo: { 
      type: 'string', 
      required: true 
     }, 
     bar: { 
      type: 'string', 
      required: true, 
     }, 
     baz: { 
      type: 'integer', 
      required: true, 
      min: 1 
     }, 
     foobar: { 
      type: 'string', 
      unique: true 
     } 
    }, 
    beforeValidation : function(values,cb) { 
     values.foobar = values.foo+values.bar; 
     cb(); 
    } 
}; 
module.exports = Example; 

Y at-il une meilleure stratégie pour créer une clé composite unique?

+0

Je cherche également une réponse à ce problème, mais dans la ligne de flottaison. Avez-vous utilisé cette technique et avez-vous travaillé pour vous? Ou avez-vous utilisé une solution spécifique à la base de données (pas quelque chose que je voudrais poursuivre)? – Charlie

Répondre

6

Il n'y a aucun moyen de faire cela directement dans les voiles voir https://github.com/balderdashy/waterline/issues/221. La meilleure solution consiste à le faire directement dans la base de données que vous prévoyez d'utiliser.

+0

Le problème avec cette opération dans la base de données est que, lorsque vous voulez référencer la clé primaire composite en tant que clé étrangère dans une autre table, l'ORM Waterline ne fera rien pour vous. Vous finirez par implémenter vous-même cette partie de l'ORM. La solution du demandeur est probablement meilleure dans ce cas que de l'implémenter au niveau de la base de données. –

Questions connexes