2016-07-09 7 views
1

Gemäß der untenstehenden Dokumentation hat get() einen einzigen Parameter: key. In der Beschreibung ist:Was ist der Zweck von 'Number()' in indexedDB get() Methode

Schlüssel zur Identifizierung des Datensatzes abgerufen werden. Dies kann auch ein IDBKeyRange sein. In diesem Fall ruft die Funktion den ersten vorhandenen Wert in diesem Bereich ab.

Im folgenden Beispielcode mit get(Number("1")) finden Sie den Datensatz. Wenn Sie nur get("1") verwenden, ist das Ergebnis leer. (Der primäre/einzige Schlüssel ist ‚num‘ und ist Autoinkrement.)

function removeRecord(num) { 
    var transaction = db.transaction(['queueStore'], 'readwrite'); 
    var store = transaction.objectStore('queueStore'); 

    // Check if the record exists & to identify the record 
    store.get(Number(num)).onsuccess = function(event) { 
     /* ^here  this works */ 
     var result = event.target.result; 
     if(result) { 
      number = result.number; 
     } 
    }; 
} 

Ich habe nicht in der Lage gewesen, die Antwort in den Indexed Database API oder durch die Suche zu finden.

Was leistet Number?

Antwort

3

Der Number-Konstruktor, der als Funktion aufgerufen wird (dh ohne new), konvertiert den Parameter in eine Zahl und gibt diesen Wert zurück. So gibt Number("1") die Nummer 1 zurück.

Es ist sinnlos, Number("1") explizit zu codieren; Sie würden einfach 1 verwenden. Es ist nützlich, wenn Sie wissen, dass Sie einen Zeichenfolgenwert erhalten könnten. In Ihrem Fall führt die API einen exakten Vergleich mit Ihrem Schlüssel durch, und wenn der echte Schlüssel eine Zahl ist, wird er niemals eine Zeichenfolge sein.

Der unäre + Operator tut im Wesentlichen die gleiche Sache, so +"1" ist auch 1. Einige Leute bevorzugen, Number() explizit zu nennen, weil es ein wenig expliziter ist.

Die parseFloat() Funktion auch eine Zeichenfolge in eine Zahl, aber im Gegensatz zu dem Number() Konstruktor oder einstelligen +, konvertiert parseFloat() für nicht-numerischen Inhalt am Ende der Eingabezeichenfolge erlauben:

console.log(parseFloat("123hello world")); // 123 
console.log(+"123hello world"); // NaN 
+0

I muss beim Betrachten der Debugger-Ausgabe verwirrt werden. Also, 'store.get (1)' ist die einfachste Verwendung? – David

+0

@David gut 'store.get (1)' ist die einfachste Sache zu tun, wenn Sie den Datensatz mit Schlüssel '1' wollen, ja. – Pointy