MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेवला सत्यापन त्रुटियों को संभालना - कहाँ और कैसे?

इस बिंदु पर यह खरीदना तर्कसंगत लगता है कि कैसे नेवला त्रुटियों को संभालता है।

आप नहीं चाहेंगे कि आपके मॉडल त्रुटि संदेशों को संभालें। प्रस्तुति परत (नियंत्रक?) को type . पर निर्भर होना चाहिए यह तय करने के लिए कि प्रदर्शित करने के लिए सबसे अच्छा उपयोगकर्ता-अनुकूल संदेश कौन सा है (i18n माना जाता है)।

ऐसे मामले भी हैं जहां मिडलवेयर का उपयोग करके सत्यापन हो सकता है। इस मामले में, त्रुटि संदेश जो आपके नियंत्रक के सामने आएगा वह वही है जो आप next() को पास करते हैं कॉलबैक।

इसलिए, मिडलवेयर के मामले में, हालांकि दस्तावेज नहीं है, अपने मॉडलों में एक सुसंगत सत्यापन एपीआई रखने के लिए आपको सीधे मोंगोज़ के त्रुटि कंस्ट्रक्टर्स का उपयोग करना चाहिए:

var mongoose = require('mongoose');
var ValidationError = mongoose.Error.ValidationError;
var ValidatorError  = mongoose.Error.ValidatorError;

schema.pre('save', function (next) {
  if (/someregex/i.test(this.email)) {
    var error = new ValidationError(this);
    error.errors.email = new ValidatorError('email', 'Email is not valid', 'notvalid', this.email);
    return next(error);
  }

  next();
});

इस तरह आपको एक सुसंगत सत्यापन त्रुटि प्रबंधन की गारंटी दी जाती है, भले ही सत्यापन त्रुटि किसी मिडलवेयर से उत्पन्न हो।

त्रुटि संदेशों का ठीक प्रकार से मिलान करने के लिए मैं एक enum . बनाऊंगा जो सभी संभावित प्रकारों के लिए एक स्थिर मानचित्र के रूप में कार्य करेगा:

// my controller.js

var ValidationErrors = {
  REQUIRED: 'required',
  NOTVALID: 'notvalid',
  /* ... */
};


app.post('/register', function(req, res){
  var user = new userModel.Model(req.body);

  user.save(function(err){
    if (err) {
      var errMessage = '';

      // go through all the errors...
      for (var errName in err.errors) {
        switch(err.errors[errName].type) {
          case ValidationErrors.REQUIRED:
            errMessage = i18n('Field is required');
            break;
          case ValidationErrors.NOTVALID:
            errMessage = i18n('Field is not valid');
            break;
        }
      }
      res.send(errMessage);

    }
  });
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या है Mongoose त्रुटि ObjectId पर कास्ट करें मान XXX के लिए पथ _id पर विफल रहा?

  2. $elemMatch (प्रक्षेपण) मानदंड से मेल खाने वाली सभी वस्तुओं को लौटाएं

  3. मैंगोज़ का उपयोग करके स्ट्रिंग के हिस्से वाले सभी मान कैसे प्राप्त करें?

  4. मोंगोडीबी $addToSet

  5. MongoDB - संग्रह में प्रति समूह अधिकतम विशेषता वाले दस्तावेज़ प्राप्त करें