Ich habe einen Knoten-Server mit Mongoose, mit einem Benutzerschema. Ich versuche, eine Anmeldefunktion zu schreiben, aber ich bin die folgenden Fehler erhalten:Mongoose Schema Konstruktor nicht erkannt
TypeError: this is not a constructor
Dies wird in diesem Code vorkommen:
var mongoose = require('mongoose');
var passwordHasher = require('password-hash-and-salt');
var User = new mongoose.Schema({
username: String,
hashedPassword: String,
email: String
});
User.statics.signup = function(un, pw, em, cb){
this.findOne({ $or:[ {'username': un}, {'email': em} ] }, function(err, person){
if (err) cb(false, "Server error");
else if (person == null){
passwordHasher(pw).hash(function(error, hash){
console.log(un, pw, em);
if (error) cb(false, "Server error");
var newUser = new User({ username: un, hashedPassword: hash, email: em});
^(location of error)
newUser.save(function(err){
if (err) cb(false, "Server error");
else {
cb(true, null);
}
});
});
}
else if (person.email == em && person.username == un) cb(false, "Username and email are taken");
else if (person.email == em) cb(false, "Email is taken");
else if (person.username == un) cb(false, "Username is taken");
});
}
var model = mongoose.model('User', User);
module.exports = model;
Ich bin nicht sehr vertraut mit Javascript, so könnte es sein, ein einfacher Tippfehler, den ich irgendwo anders in der Methode vermisste. Ich habe jedoch irgendwelche Probleme untersucht, die ich mit ähnlichem Fehler finden konnte, die vorgeschlagenen Änderungen haben das Problem nicht behoben.
Das gibt mir 'TypeError: Kann die Eigenschaft 'Anmeldung' von undefined ', in der Zeile' module.exports.statics.signup = ... ' – erdekhayser
nicht setzen Das liegt daran, dass Ihre module.exports.statics' undefiniert 'ist. – thangtn
Sie müssen sicherstellen, dass Ihre model.statics vorhanden ist, sonst könnten Sie tun: module.exports.signup = function (... – thangtn