为什么负零会在插入时触发错误

时间:2017-06-14 15:26:53

标签: javascript angularjs node.js mongodb mongoose

我定义了一个模式,其中某些字段的默认值为零。然后,当通过表单进行插入时,我必须否定这些值,并且某些字段可能不存在(因此它可以默认为零)。

这是架构:

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。如果我拿出否定一切都很完美,即使有些字段留空,也会进行两次插入。这就是为什么我假设试图通过模式否定默认值存在问题

0 个答案:

没有答案