Javascript 为什么负零会在插入时触发错误
我定义了一个模式,其中某些字段的默认值为零。然后,当通过表单进行插入时,我必须对这些值求反,并且某些字段可能不存在(因此可以默认为零) 这是模式:Javascript 为什么负零会在插入时触发错误,javascript,angularjs,node.js,mongodb,mongoose,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:
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'});
};
});
};
});
另外,如果我去掉否定项,一切都会正常工作,即使有些字段是空的,也会进行两次插入。这就是为什么我假设在尝试通过模式否定默认值时出现问题,并且一些字段可能不存在(因此可以默认为零)“不,不是,它是未定义的,这是完全不同的事情。相反,在尝试访问属性或类似地在转换过程中迭代键之前,应该使用as in
if(req.body.hashOwnProperty('vacas'){
测试属性是否存在。另外,这就像这些根本不是数字,而是“字符串”。这是存在的任何正文后数据的默认值。您好Fjallbacka-您能显示您得到的错误吗?@NeilLunn是的,如果该字段为空,因为我的架构有一个默认值,那么将分配一个零。除我在此处指定的用例外,它完全适用于所有用例