Mongoose set: toLower not working on nested properties

I am trying to normalize email addresses in lower case before they are stored in the database. Setters on mongoose models are great for this, and they work on simple models. However, when I try to set setLoader on a nested object where the email is stored inside the "owner", I getTypeError: Cannot call method 'toLowerCase' of undefined

toLower (v) {return v.toLowerCase (); }

Failure:

var BusinessSchema = new mongoose.Schema({
    owner: {
        email:  { type: String, required: 'Email adres mag niet leeg zijn.', set: toLower, get: toLower, index: { unique: true } },
        password: { type: String, required: 'Wachtwoord mag niet leeg zijn.' }
    }
});

It works:

var UserSchema = new Schema({
  email: { type: String, set: toLower } 
});
+4
source share
1 answer

toLower , undefined , . , toLower , , .

- :

function toLower (v) {
    if ('string' != typeof v) v = '';
    return v.toLowerCase();
}

, lowercase :

var BusinessSchema = new mongoose.Schema({
    owner: {
        email:  { 
            type: String, 
            required: 'Email adres mag niet leeg zijn.', 
            lowercase: true,
            index: { unique: true }
        },
        password: { type: String, required: 'Wachtwoord mag niet leeg zijn.' }
    }
});
+3

All Articles