MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoose Pre-Save Hook đang kích hoạt, nhưng không lưu trường bổ sung (KHÔNG sử dụng model.update)

Bạn đang bỏ lỡ this ngữ cảnh ở đây,

.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();
    });
})

nơi bạn nói:

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

thực sự đề cập đến chức năng gọi lại của truy vấn findOne, do đó bạn đang kết thúc với đúng console.log và dữ liệu được chèn sai.

bạn có thể nhớ ngữ cảnh này của móc lưu trước và sau đó cập nhật số bằng cách sử dụng ngữ cảnh đó bên trong lệnh gọi lại. như bên dưới:

.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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ exp

  2. loại bỏ _id khỏi kết quả mongo

  3. cập nhật bằng id không hoạt động trong mongoose

  4. Cách viết mã MongoDB foreach Query trong PHP

  5. Cách trả lại tài liệu nhúng push () cuối cùng