I ran into an error and I don't know why. I try to transform all the character into lowercase before inserting into database and for comparison purposes.
At the first function this.addUser I call toLower to transform it become lowercase it has no problem but at second function this.checkPublicUsername I call toLower it display an error in my terminal said that TypeError: Cannot call method 'toLowerCase' of undefined
function toLower (text) {
return text.toLowerCase();
}
this.addUser = function(data,callback) {
"use strict";
// Generate password hash
var salt = bcrypt.genSaltSync();
var password_hash = bcrypt.hashSync(data.password, salt);
// transform all character into lowercase
var real = toLower(data.publicUsername);
// Create user document
var user = {
'_id': data.email,
'email':data.email,
'password': password_hash,
'name':{
'firstName': data.firstName,
'lastName': data.lastName
},
'penName': data.penName,
'publicUsername':{
'display':data.publicUsername,
'real':real
}
};
users.insert(user, function (err, result) {
"use strict";
if (!err) {
console.log("Inserted new user");
return callback(null, result[0]);
}
if (err) console.log(err)
return callback(err, null);
});
}
this.checkPublicUsername = function(data,callback) {
"use strict";
var real = toLower(data);
var publicUsername = {
"publicUsername.real":real
}
users.find(publicUsername).count(function(err, result) {
callback(null,result);
})
}
users.checkPublicUsername(data.publicUsername, function(err, result){
if(result){
callback(new Error('"'+data.publicUsername+'" has been taken. Please choose another.'), null);
}
});
You get this error because data.publicUsername is undefined, check the value that you are passing to this function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With