我定义了一个模式,其中某些字段的默认值为零。然后,当通过表单进行插入时,我必须否定这些值,并且某些字段可能不存在(因此它可以默认为零)。
这是架构:
module.exports = mongoose.model('Acontecimiento', {
campo : {type : String, required: true},
titular: {type: String, required: true},
fecha : {type : Date, default: Date.now, required: true},
tipo : {type : String, required: true},
brucelosis : {type : Number, default: 0},
vacas : {type : Number, default: 0},
toros : {type : Number, default: 0},
novillitos : {type : Number, default: 0},
vaquillonas : {type : Number, default: 0},
terneras : {type : Number, default: 0},
terneros : {type : Number, default: 0},
});
我不知道为什么,但是如果我把每个字段放在零上,则插入有效,但是如果我将其中一些留空(以便可以通过mongoose模式进行默认),则会触发错误。
这是我的代码:
app.post('/api/acontecimiento', function(req, res) {
if (req.body.tipo.a != undefined) {
var insert = [
{
campo : req.body.campo,
titular : req.body.titular,
fecha : req.body.fecha,
tipo : req.body.tipo.tipo,
brucelosis : - req.body.brucelosis,
vacas : - req.body.vacas,
toros : - req.body.toros,
novillitos : - req.body.novillitos,
vaquillonas : - req.body.vaquillonas,
terneras : - req.body.terneras,
terneros : - req.body.terneros
},
{
campo : req.body.tipo.a,
titular : req.body.titular,
fecha : req.body.fecha,
tipo : req.body.tipo.tipo,
brucelosis : req.body.brucelosis,
vacas : req.body.vacas,
toros : req.body.toros,
novillitos : req.body.novillitos,
vaquillonas : req.body.vaquillonas,
terneras : req.body.terneras,
terneros : req.body.terneros
}
];
Acontecimiento.create(insert, function(err, translado, transladado) {
if (err) {
res.json({ success: false, message: 'Campo, titular, fecha y tipo de operacion deben especificarse'});
} else {
res.json({ success: true, message: 'Nueva operacion guardada'});
};
});
};
});
PS。如果我拿出否定一切都很完美,即使有些字段留空,也会进行两次插入。这就是为什么我假设试图通过模式否定默认值存在问题