我使用present或not作为标志然后执行相关操作。就像我的情况一样,我用股票或等级或两者做某事。猜猜是什么问题?
stock = parseInt(req.body.stock),
grade = parseInt(req.body.grade),
var update = {};
if(stock){
update = {'data.$.stock':stock}
}
if(grade){
update = {'data.$.grade':grade}
}
if(stock && grade){
update = {
'data.$.grade':grade,
'data.$.stock':stock
}
}
如果在这种情况下允许存货0
,则会出现错误。因此,如果库存为零,则会发生错误。因为它没有通过if(stock){}
,嗯如何解决这个问题?
如果股票不是undefined
&&;我不想写。库存不是null
,这太长了。
答案 0 :(得分:3)
只需比较大于或等于0的股票:
if (stock >= 0)
答案 1 :(得分:3)
您可以通过分配属性来简化代码,而不是分配整个对象。
stock = parseInt(req.body.stock),
grade = parseInt(req.body.grade),
var update = {};
if (stock >= 0) {
update['data.$.stock'] = stock; // set property
}
if (grade >= 0) {
update['data.$.grade'] = grade; // set property
}
// skip part for assigning both
答案 2 :(得分:1)
您可以使用isNaN()
。像
if (!isNaN(stock))
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/isNaN