2017-12-29 28 views
0

私は自分のDB内に新しい文書を作成しています。保存する前に別の操作を実行したいと思います。 pre saveメソッドは実行されません。Mongoose Pre Save Method not triggering

新しいドキュメントを作成するために私のコードは:

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

「プロポーザル」モデルの宣言をさらに投稿できますか? –

+0

@TsvetanGanevコードの更新された質問をご覧ください。 – Skywalker

+0

モデルをどのようにエクスポートしますか? 'mongoose.model()'の結果の割り当てが表示されません。 –

答えて

0

あなたはnewキーワードであなたのモデルをインスタンス化する必要があります。 Mongooseドキュメントの引用:

モデルは、私たちのスキーマ定義からコンパイルされたファンシーコンストラクタです。

+0

私はこれを試したことがあり、thewのエラーはまだ残っています。それは私を狂って運転している。 – Skywalker

+0

待ち時間、何が投げられるのですか?あなたは現在のコードがエラーを投げたとは言わなかった、あなたは 'pre-save'関数だけが動かなかったと言った。 –

+0

それは '内部サーバーエラー500'を投げ、それ以外は何も投げません。私の 'pre save'コードを削除すれば、すべて正常に動作します。 – Skywalker

関連する問題