4

私はマングースにこのスキーマを持っていますが、アップデートでプレを使用すると、このエラーが発生します。

JobSchema.pre('update', function(n){n()})

フルエラー

C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\utils.js:413
        throw err;
              ^
TypeError: Cannot read property 'numAsyncPres' of undefined
    at Model._lazySetupHooks (C:\web\production01_server\node_modules\production\node_modules\mongoose\node_modules\hooks\hooks.js:149:49)
    at Model.pre (C:\web\production01_server\node_modules\production\node_modules\mongoose\node_modules\hooks\hooks.js:113:10)
    at Model.doQueue (C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\document.js:1116:41)
    at Model.Document (C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\document.js:55:8)
    at Model.Model (C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\model.js:26:12)
    at Model.model (C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\model.js:910:11)
    at new Model (C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\connection.js:418:15)
    at cb (C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\query.js:804:16)
    at C:\web\production01_server\node_modules\production\node_modules\mongoose\lib\utils.js:408:16
    at C:\web\production01_server\node_modules\production\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:133:9

ノート:

  • pre('save' WORKS
  • post('update' エラーをスローせず、機能しません
4

4 に答える 4

10

Mongoose 4.0 は、Query ミドルウェアを介して pre update フックをサポートします。 http://mongoosejs.com/docs/middleware.html

schema.pre('update', function() {
  console.log(this instanceof mongoose.Query); // true
  this.start = Date.now();
});

schema.post('update', function() {
  console.log(this instanceof mongoose.Query); // true
  console.log('update() took ' + (Date.now() - this.start) + ' millis');
});

注意事項:

"クエリミドルウェアは、微妙ではあるが重要な点でドキュメントミドルウェアと異なります。ドキュメント ミドルウェアでは、これは更新されるドキュメントを参照します。クエリ ミドルウェアでは、マングースは必ずしも更新されるドキュメントへの参照を持っているとは限らないため、これクエリを参照します。更新中のドキュメントではなくオブジェクトです。」

于 2015-06-07T18:50:27.650 に答える
4

Mongooseのドキュメントによると、ミドルウェアの前後の機能は以下をサポートしています。

  • 初期化
  • 検証
  • 保存する
  • 削除する

更新はサポートされていません。

于 2013-03-20T22:16:12.220 に答える
1

私はこれを見つけました:https://github.com/LearnBoost/mongoose/issues/538 更新の前はありません...

于 2012-08-01T15:28:27.873 に答える