0
다음을 사용하여 새 문서를 mongodb 데이터베이스에 저장할 수 있습니다. 이 정의되지 않은 메소드와 콜백 내 멤버
User.prototype.save = function (fn) {
var user = new userModel({
user: this.user,
pass: this.pass
});
console.log('user: ' +user);
this.hashPassword (user.pass, function (err, salt, hash) {
if (err) return fn (err);
this.pass = hash;
user.salt = salt;
user.pass = hash;
user.save (function (err, product, numberAffected) {
if (err) return fn (err);
return fn(undefined);
});
});
};
는 지금은 사용자가 이미
User.prototype.save = function (fn) {
// See if the username exists
userModel.findOne ({ 'user': this.user }, function (err, user) {
if (err) return fn (err);
if (!user) {
user = new userModel({
user: this.user,
pass: this.pass
});
console.log('user: ' +user);
this.hashPassword (user.pass, function (err, salt, hash) {
if (err) return fn (err);
this.pass = hash;
user.salt = salt;
user.pass = hash;
user.save (function (err, product, numberAffected) {
if (err) return fn (err);
return fn(undefined);
});
});
} else {
// TODO: update all the user fields
console.log ('user already exists');
}
});
}
this.hashPassword가 더 이상 TypeError: Object #<Promise> has no method 'hashPassword'
을 발견하고 사용자의 필드는 현재 정의되지 않습니다 저장하지 전에 존재하는지 확인하기 위해 노력하고있어. 이 콜백 내에서 this
을 어떻게 사용할 수 있습니까?
편집 1 :
가 나는 또한 첫 번째 조각에서 this.pass = hash;
도 내가 신경 개체에 아무것도하지 않는 것을 알 수 면밀한 관찰을 복용합니다. 전체에서 선 후 2
var self = this
에
라인이 'VAR 자체에 = this' 다음,'self.hashPassword()' – adrichman
의미와 작동; 자유롭게 대답을 남겨주세요. – JuJoDi