2016-08-23 35 views
0

Wenn ich versuche, eine neue Adresse zu erstellen, schlägt die Validierung jedes Mal aufgrund des benutzerdefinierten Validators fehl. Es schlägt immer noch fehl, wenn ich den Inhalt von companyExists durch 'return true' ersetze. Ich fand, dass eine Problemumgehung darin bestand, den benutzerdefinierten Validierer in einer der Dateien in etwas anderem wie CompanyExists2 umzubenennen. Es scheint, dass benutzerdefinierte Validatoren nicht denselben Namen haben können. Ist das erwartete Verhalten für Sails.js? Postbote einen 400 Fehler zurückgibt sagen, dass die Validierung mit einer JSON-Antwort von fehlgeschlagen:Sind eindeutige benutzerdefinierte Validierungsnamen erforderlich?

"invalidAttributes": { 
    "company": [ 
    { 
     "rule": "companyExists", 
     "message": "\"companyExists\" validation rule failed for input: 1\nSpecifically, it threw an error. Details:\n undefined" 
     } 
    ] 
}, 

In models/Address.js ich habe:

module.exports = { 
    attributes: { 
     street: { 
      type: 'string' 
     }, 
     // More attributes 
     company: { 
      model: 'company', 
      required: true, 
      unique: true, 
      companyExists: true 
     } 
    }, 
    types: { 
     companyExists: function(companyID) { 
      Company.findOne(companyID).exec(function(err, company) { 
       if (err || !company) return false; 
       return true; 
      }); 
     } 
    } 
}; 

In models/Company.js ich habe:

module.exports = { 
    attributes: { 
     name: { 
      type: 'string', 
      required: true 
     }, 
     // More attributes 
     company: { 
      model: 'company', 
      required: true, 
      unique: true, 
      companyExists: true 
     } 
    }, 

    types: { 
     companyExists: function(companyID) { 
      Company.findOne(companyID, function (err, company) { 
       if (err || !company) return false; 
       return true; 
      }); 
     } 
    } 
}; 

Antwort

0

Benutzerdefinierte Validierungsregeln werden mit den integrierten Validierungsregeln zusammengeführt. Das macht sie in all deinen Modellen zugänglich. Wenn Sie dieselbe Regel mehrmals benötigen, müssen Sie sie nur einmal schreiben (egal in welchem ​​Modell).

Sie müssen auch darauf achten, nicht mit den bestehenden Regeln zu kollidieren. Sie können die vollständige Liste here

finden
Verwandte Themen