gpt4 book ai didi

node.js - 如何在保存之前检查该数据是否已存在于数据库中

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

大家好,我有一个问题,如何在将编辑或发布(发布或放置操作)数据保存到 mongoose 之前进行验证!?

例如,如果数据库中已存在操作,则用户将收到某种错误。我尝试这个但不起作用:1-不工作

var mongoose = require("mongoose"),
Schema = mongoose.Schema;

var actionSchema = new Schema({
action: {
type: String,
required: true,

},
});

var data = mongoose.model('Action', actionSchema);

actionSchema.pre('save', function (next) { // Middlware to verify if action already existe
var self = this;
data.find({
action: self.action
}, function (err, actions) {
if (!actions.length) {
next();
} else {
console.log('action exists: ', self.name);
next(new Error("Action exists!"));
}
});
});

module.exports = mongoose.model('Action', actionSchema);

2 --- 第二种方法不起作用:------------------------------------

 var data = mongoose.model('Action', actionSchema);

actionSchema.pre('save', function (next) {
data.count({
action: this.action
}, function (err, count) {
if (count == 1) {
console.log('action exists: ', this.action);
next(new Error("Action exists!"));
//already exists
} else {
next();
//do the action
}
});
});

3-工作替代方案——NODE JS CONTROLLER ----我发现这个技巧(效果很好),即在更新之前进行检查(检查)但我想知道在我的模型 MONGOOSE 中保存之前是否有可能做到这一点!?

 // router.put('/actions/:action_id');

Action.findById(req.params.action_id, function (err, upaction) {
if (err) { //no action id in database match with params.action_id
res.send(err);
} else { // find == true


// chek if action name existe
Action.findOne({
'action': req.body.action
})
.exec(function (err, found_action) {
if (err) { // ereur bizare sest produite
next(err);
}

if (found_action) { // name action exist
res.send('name action existe');
}
else { // name action no exist

upaction.action = req.body.action;

upaction.save(function (err, acti) {
if (err) {
res.send('error on save');
}
res.send(upaction); // send a document
});
}
});
}
});

最佳答案

检查数据是否可用,然后执行您想要的操作

 var data = mongoose.model('data', actionSchema);
data.count({action: this.action}, function(err, count) {
if(count == 1){
//already exists
}
else{
actionSchema.pre('save', function (next) {
});
}
});

关于node.js - 如何在保存之前检查该数据是否已存在于数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43934851/

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