我遇到了一个错误,但我不知道为什么。在将字符插入数据库之前,我尝试将所有字符转换为小写字母以进行比较。
在第一个函数this.addUser
中,我调用toLower
将其转换为小写字母,没有问题,但在第二个函数this.checkPublicUsername
中,我调用toLower
时,在终端上显示了一个错误,说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);
})
}
调用checkPublicUsername函数
users.checkPublicUsername(data.publicUsername, function(err, result){
if(result){
callback(new Error('"'+data.publicUsername+'" has been taken. Please choose another.'), null);
}
});
this.checkPublicUsername()
的代码吗? - Paul Mougeldata.publicUsername
不存在。用console.log(data)
打印出来并展示一下data
是如何创建的。 - Paul MougelcheckPublicUserName
之前data
是如何创建的? - Aioros