DB에 새 문서를 만들고 저장하기 전에 다른 작업을 수행하고 싶습니다. pre save
메서드는 실행되지 않습니다.몽구스 Pre Save Method not triggerering
내 코드는 새 문서를 만들려면
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();
});
});
당신은'Proposal' 모델 선언의 자세한 내용을 게시 할 수 있습니까? –
@TsvetanGanev 코드에 대한 업데이트 된 질문을 참조하십시오. – Skywalker
모델을 어떻게 내 보냅니 까? 'mongoose.model()'의 결과가 할당되지 않았습니다. –