2017-01-02 5 views
2

Ich benutze Gegenwart oder nicht als Flagge dann relevante Aktion durchführen. Wie in meinem Fall mache ich etwas mit Stock oder Grade oder beides. Raten Sie, was ist das Problem?Erlauben Sie Null (0) in wenn Javascript

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 
    } 
} 

Es wird ein Fehler sein, wenn Vorrat 0 in diesem Fall erlaubt ist. Wenn das Inventar also Null ist, wird der Fehler auftreten. Weil es if(stock){} nicht passiert, hmm, wie man das löst?

Ich will nicht schreiben, wenn Vorrat nicht undefined & & Lager ist nicht null, dass zu lang ist.

+2

'if (Lager == null)' wird wahr sein, wenn 'stock' ist * entweder *' null' oder 'undefined'. – Pointy

+1

'Stock' wird niemals" undefiniert "oder" null "sein, es wird entweder eine Zahl oder' NaN' sein. – vlaz

+2

"Ich möchte nicht schreiben, wenn die Aktie nicht' undefiniert' ist && Aktie ist nicht 'null', das ist zu lang." Das ist ein merkwürdiger Grund, wenn man bedenkt, dass Sie bereit waren, 20x in Ihre Frage zu schreiben. – ceejayoz

Antwort

2

Sie den Code durch die Zuordnung einer Eigenschaft vereinfachen könnte, anstatt eine ganze Aufgabe zuweisen.

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 
+0

nett, aber es beantwortet meine Frage nicht. Ich will Lager kann '0' sein lol –

+0

@ThianKianPhin: Nina nicht ausdrücklich herausrufen, aber beachten Sie die' if (Stock> = 0) 'und' if (grade> = 0) ', die nur wahr sein werden, wenn Die Werte wurden erfolgreich als Zahlen analysiert und sind nicht 'NaN'. Also * tut *, was du gesagt hast, dass du willst (vorausgesetzt, beides kann nicht negativ sein). –

+0

@ThianKianPhin: Und wenn negative Zahlen gültig sind, gibt es immer 'if (stock <= Infinity) {' - der einzige Wert, der von 'parseInt' zurückgegeben wird, für den * nicht * wahr ist, ist' NaN', was ist Sie erhalten, wenn Sie 'parseInt (undefined)' oder 'parseInt (null)'. –

3

einfach vergleichen Lager größer oder gleich 0:

if (stock >= 0)

+7

Größer oder gleich mindestens :) Das OP möchte, dass der Nullbestand gültig ist. – Luaan

+0

ah yea lol, habe aktualisiert – hackerrdave

+0

Ich weiß nicht, was "Grad" sein könnte, sind wir sicher, dass es nicht negativ sein kann? Ich denke 'Stock' kann nicht sein ... –