簡體   English   中英

貓鼬預保存方法不觸發

[英]Mongoose Pre Save Method not triggering

我正在數據庫中創建一個新文檔,並且在保存之前要執行其他操作。 但是pre save方法不執行。

創建新文檔的代碼:

let create = (req, res) => {


   let newProposal = Proposal();

   newProposal.sector = req.body.sector;
   newProposal.client = req.body.client;
   newProposal.owner = req.body.owner;
   newProposal.proposalTitle = req.body.proposalTitle;
   newProposal.proposalRegion = req.body.proposalRegion;
   newProposal.clientContact = req.body.clientContact;


  newProposal.save()
    .then((savedProposal) => {return _updateUser(req.decoded._id, savedProposal)})
    .then(() => {return _checkClientExists(req.body.client)})
    .then((client) => {return _updateClientList(client, req.body)})
    .then(() => {res.json(newProposal)})
    .catch(err => {sendJsonResponse(res, 500, err)})
};

我的預保存代碼:

proposalSchema.pre('save', function(next) {
   console.log("Does not work");
});

我也嘗試過使用pre validate

我究竟做錯了什么? 我已經被困了幾個小時了。

更新:提案架構代碼:

const proposalSchema = new mongoose.Schema({

proposalNo: Number,
proposalUrls: {type: String, default: 'none'},
proposalStatus: {type: String, default: 'live' ,set: toLower},
sector: {type: String, set: toLower},
client: {type: String, set: toLower},
owner: {type: String, set: toLower},
proposalTitle: {type: String, set: toLower},
proposalRegion: String,
clientContact: {type: String, set: toLower},


dateCreated: {type: Date, default: Date.now},

});

function toLower(data) {
   return data.toLowerCase();
}

proposalSchema.pre('save', function(next) {
   console.log("Does not work");
});

mongoose.model('Proposals', proposalSchema);

更新2:

const Counter = require('../models/counter');

proposalSchema.pre('save', function(next) {
    let doc = this;

    Counter.findByIdAndUpdate({_id: 'entityId'},{$inc: { seq: 1}},{"upsert": true,"new": true  }, function(error, counter)   {
        if(error) {
            return next(error);
        }

        doc.proposalNo = counter.seq;
        next();
    });
});

您必須使用new關鍵字實例化模型。 引用貓鼬文檔:

模型是根據我們的Schema定義編譯而成的精美構造函數。

let newProposal = new Proposal();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM