sql >> データベース >  >> NoSQL >> MongoDB

Mongoose Pre-Save Hookは起動していますが、追加フィールドを保存していません(model.updateを使用していません)

    thisを見逃しています ここでのコンテキスト

    .pre('save', function(next) {
      Project.findOne({_id: this.project}).select('numberSeq').exec(function(err, doc) {
        if (err) {
          console.log(err);
        }
        console.log('pre-save hook firing');
          this.number = doc.numberSeq;
          console.log(this.number);
          next();
        });
    })
    

    あなたが言うところ:

    this.number = doc.numberSeq;
    console.log(this.number);
    

    実際にはfindOneクエリのコールバック関数を参照しているため、正しいconsole.logと間違ったデータが挿入されてしまいます。

    事前保存フックのこのコンテキストを覚えておいて、後でコールバック内のそのコンテキストを使用して番号を更新できます。以下のように:

    .pre('save', function(next) {
      var tat=this;
      Project.findOne({_id: this.project}).select('numberSeq').exec(function(err, doc) {
        if (err) {
          console.log(err);
        }
        console.log('pre-save hook firing');
          tat.number = doc.numberSeq;
          console.log(tat.number);
          next();
        });
    })
    



    1. pymongoのReplicaSetConnectionの使用:時々IndexErrorを取得します:カーソルにそのような項目はありません

    2. 次のストップ–エッジからインサイトへのデータパイプラインの構築

    3. 複数のデータベースをサポートするPythonアプリケーションの書き方

    4. マングースモデルのすべてのカウントを取得するにはどうすればよいですか?