Ich erstelle ein neues Dokument in meiner Datenbank und vor dem Speichern, dass ich eine andere Aktion ausführen möchte. aber die pre save
Methode wird nicht ausgeführt.Mongoose Pre Save Methode nicht triggern
Mein Code Neues Dokument zu erstellen:
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)})
};
Mein Pre speichern Code:
proposalSchema.pre('save', function(next) {
console.log("Does not work");
});
Ich habe auch versucht pre validate
verwenden.
Was mache ich falsch? Ich bin seit Stunden festgefahren.
Update: Vorschlag Schema Code:
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);
Update 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();
});
});
Können Sie nach mehr von der 'Proposal' Modell Erklärung? –
@TsvetanGanev sehen Sie bitte aktualisierte Fragen für den Code. – Skywalker
Wie exportieren Sie das Modell? Ich sehe keine Zuordnung des Ergebnisses von 'mongoose.model()'. –