gpt4 book ai didi

javascript - Mongoose 预保存方法未触发

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:51 25 4
gpt4 key购买 nike

我正在数据库中创建一个新文档,在保存之前我想执行另一个操作。但 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");
});

我还尝试过使用预验证

我做错了什么?我已经被困了几个小时了。

更新:提案架构代码:

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 关键字实例化您的模型。引用 Mongoose 文档:

Models are fancy constructors compiled from our Schema definitions.

let newProposal = new Proposal();

关于javascript - Mongoose 预保存方法未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48023920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com