2017-07-25 4 views
0

Ich benutze Sequelize 2. Ich versuche im Grunde, eine Validierung, die nur maximal 2 Leute mit einer Rolle gleich Mitglied pro Konto ermöglicht. Zur Zeit bekomme ich einen Fehler:Sequelize Validierungsfehler auf findAll

Unbehandelte Ablehnung Fehler: [Objekt Objekt], [Objekt Objekt], [Objekt Objekt], [Objekt Objekt], [Objekt Objekt], [Objekt Objekt], [Objekt Objekt], [object Object]

wenn ich eine dev db build ausführen. Übrigens gibt es 8 Datensätze, die ich einfügen möchte.

Wie sollte ich diese Validierung ändern, damit sie ohne diesen Fehler funktioniert? Ich bin neu im Knoten.

module.exports = function(sequelize, DataTypes) { 
var MemberAccount = sequelize.define('member_account', { 
role: { 
    type: DataTypes.STRING, 
    allowNull: false, 
    validate: { 
    isIn: { 
     args: [['member', 
       'advocate']], 
     msg: 'Must be member or advocate' 
    }, 
    hasFewMembers(value, next) { 
     var self = this; 
     var v = MemberAccount.findAll({ 
     where: { 
      role: 'member' 
     } 
     ,attributes: [[sequelize.fn('COUNT', sequelize.col('role'))]] 
     }) 
     .then(function(member_count) { 
      if (self.role=='member' && member_count == 2) { 
      throw new Error('Only 2 members allowed per account!'); 
      } 
      return next(); 
     }) 
     .catch(function (err) { 
     return next(err); 
     }); 

     return v; 

    } 

Antwort

0

Ich glaube, ein Haken ist für Ihren Anwendungsfall eher gerechtfertigt als eine Validierung. Sie können einen "beforeCreate" -Hook erstellen, der ausgelöst wird, bevor Datensätze in die Datenbank eingefügt werden.
Siehe diesen Link http://docs.sequelizejs.com/manual/tutorial/hooks.html

+0

danke. also sagst du einfach meine hasFewMembers Funktion in einen hook. beforeCreate. Groß. Ich denke jedoch, dass mein Fehler eine andere Ursache hat und dadurch verursacht wird, wie ich die hasFewMembers-Funktion strukturiere und wie ich die Datenbank aufruft. –