2017-03-15 4 views
0

ユーザースキーマの保存後に会社名を照会するにはどうすればよいですか?このコードではポストセーブでmongooseクエリを実行するには?

UserSchema.post('save', function (doc) { 
    console.warn("POST SAVE", doc); 
    console.log(this, "---------------------------------------------"); 
    this.findOne({_id:doc._id}) 
     .populate('company') 
     .exec(function (err, _user) { 
     if(err) return next(err); 
     else{ 
      // console.warn("_USER", _user); 
      if(_user.company.name) doc.companyName = _user.company.name; 
      Sync.syncUser(doc) 
       .then(function (_r) { 
        // console.log(_r,"<-----------------------------------------------------------"); 
        if (_r) { 
        console.warn("POST SAVE -> SYNC OK!"); 
        next(); 
        } else { 
        console.warn("POST SAVE -> SYNC ERR: ", err); 
        return next(err); 
        } 
       }) 
       .fail(function (err) { 
        console.warn("POST SAVE -> SYNC ERR: ", err); 
        return next(err); 
       }); 
     } 
    }); 
}); 

私はエラーを持っている:

TypeError: this.findOne is not a function

+0

あなたは 'UserSc hema.findOne() 'の代わりに' this'の権利?または 'this.constructor.findOne' –

答えて

2

User.findOne()代わりのthisを試すか、あなたは

var User = mongoose.model('User', UserSchema);

を行う必要があります最初の道のために this.constructor.findOne

を使用

+0

' this.constructor.findOne'を使いました。どうもありがとうございました! – Stefano

関連する問題