2015-07-27 6 views
10

मैं मोंगोड के साथ मोंगोड में एक नया दस्तावेज़ सहेजने की कोशिश कर रहा हूं, लेकिन मुझे ValidationError: Path 'email' is required., Path 'passwordHash' is required., Path 'username' is required. मिल रहा है, भले ही मैं ईमेल, पासवर्ड हैश और उपयोगकर्ता नाम की आपूर्ति कर रहा हूं।मोंगोस: सत्यापन त्रुटि पथ आवश्यक है

यहां उपयोगकर्ता स्कीमा है।

var userSchema = new schema({ 
     _id: Number, 
     username: { type: String, required: true, unique: true }, 
     passwordHash: { type: String, required: true }, 
     email: { type: String, required: true }, 
     admin: Boolean, 
     createdAt: Date, 
     updatedAt: Date, 
     accountType: String 
    }); 

इस प्रकार मैं उपयोगकर्ता ऑब्जेक्ट बना रहा हूं और सहेज रहा हूं।

var newUser = new user({ 

     /* We will set the username, email and password field to null because they will be set later. */ 
     username: null, 
     passwordHash: null, 
     email: null, 
     admin: false 

    }, { _id: false }); 

    /* Save the new user. */ 
    newUser.save(function(err) { 
    if(err) { 
     console.log("Can't create new user: %s", err); 

    } else { 
    /* We succesfully saved the new user, so let's send back the user id. */ 

    } 
    }); 

तो क्यों नेवला एक सत्यापन त्रुटि है, मैं null के रूप में अस्थायी मान का उपयोग नहीं कर सकते?

+1

अच्छी तरह से मुझे नहीं पता कि आप नए यूज़र ईमेल, पासवर्ड हैश और उपयोगकर्ता नाम कहां सेट कर रहे हैं। आप इसे शून्य करने के लिए सेट कर रहे हैं और इसे सहेजने का प्रयास कर रहे हैं। –

+0

क्या आप ऐसा नहीं कर सकते? 'शून्य 'एक मान है। – 2trill2spill

उत्तर

9

आपकी आखिरी टिप्पणी के जवाब में।

आप सही हैं कि शून्य एक मान प्रकार है, लेकिन शून्य प्रकार दुभाषिया को यह कहने का एक तरीका है कि इसमें कोई मान नहीं है। इसलिए, आपको मानों को किसी भी गैर-शून्य मान पर सेट करना होगा या आपको त्रुटि मिल जाएगी। अपने मामले में उन मानों को खाली स्ट्रिंग्स पर सेट करें। यानी

var newUser = new user({ 

    /* We will set the username, email and password field to null because they will be set later. */ 
    username: '', 
    passwordHash: '', 
    email: '', 
    admin: false 

}, { _id: false }); 
1

ठीक है, निम्न तरीकों से मैं त्रुटियों से कैसे छुटकारा पा रहा हूं।

var userSchema = new Schema({ 
    name: { 
     type: String, 
     required: 'Please enter your name', 
     trim: true 
    }, 
    email: { 
     type: String, 
     unique:true, 
     required: 'Please enter your email', 
     trim: true, 
     lowercase:true, 
     validate: [{ validator: value => isEmail(value), msg: 'Invalid email.' }] 
    }, 
    password: { 
     type: String/ 
     required: true 
    }, 
    // gender: { 
    //  type: String 
    // }, 
    resetPasswordToken:String, 
    resetPasswordExpires:Date, 
}); 

और मेरे टर्मिनल मुझे निम्नलिखित लॉग फेंक और फिर मेरी रजिस्टर फ़ंक्शन को कॉल पर अनंत पुनः लोड में चला गया:

(node:6676) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ValidationError: password: Path password is required., email: Invalid email.

(node:6676) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

तो, के रूप में यह कहा पथ 'पासवर्ड' है मैं निम्न स्कीमा था आवश्यक है, मैंने अपने मॉडल से required:true लाइन और मेरे मॉडल से validate:email लाइन पर टिप्पणी की।

संबंधित मुद्दे