シナリオは次のとおりです
シナリオ#1
someSchema.pre('save', function(next){
asyncFunction(function(){
this.sub.value = 'something'
next()
})
})
これはコンテキストを変更し、asyncFunctionを表すため失敗します。そのため、関数内の受信データを変更できません。this.subが定義されていないというエラーが発生します
シナリオ#2、hooks-jsからの情報に基づく
some.Schema.pre('save', function(next){
asyncFunction(function(){
next('something')
});
});
some.Schema.pre('save', function(next, value){
this.sub.value=value
next()
})
これは、値を変更する限り機能し、mongodb側は問題ありませんが、ハングするだけで、ドキュメントを保存した後は続行されません。
私は何か間違ったことをしていますか?これを行うためのより良い方法はありますか?それともこれはバグですか
シナリオ#3は元々失敗しましたが、現在は機能しているようです
someSchema.pre('save', function(next){
x = this
asyncFunction(function(){
x.sub.value = 'something'
next()
})
})
とはいえ、シナリオ#2が機能しなかった理由についてはまだ興味があります。