2017-03-13 4 views
0

RethinkDB Inkrementieren und Dekrementieren Einzelwerterhöhen bzw. verringern RethinkDB Einzelwert

etwas Hilfe brauchen, ich bin NodeJS und Rethinkdb lernen.

Derzeit verwende ich diesen RethinkDB-Code, um den Update-Vorgang durchzuführen.

Jetzt ist die Frage: Wie kann ich einen Wert in einer Reihe aktualisieren, indem ich seinen Wert inkrementiere? Zum Beispiel sagen wir es über den Bestand eines Autos. so in einer Reihe werde ich habe:

{ 
    "code": "001" , 
    "brand": "Ferrari" , 
    "stock": "2" 
    } 

Jetzt kann sagen, dass ich eine Form machen zu steuern, wie viele Autos wird hinzugefügt oder aus dem Lager entfernt werden. Nehmen wir zum Beispiel an, ich möchte 3 neue Ferraris hinzufügen. Wie kann ich den Wert Lager, erhöhen Sie die Aktie um 3 für insgesamt 5 und nicht ersetzen 2 für 3. Lassen Sie mich auch sagen, ich verkaufte 2 Ferraris, wie kann ich den Wert verringern, so dass der Bestand Wert 0 sein wird.

Und bitte entschuldigen Sie mein schlechtes Englisch. Nicht meine Muttersprache.

Antwort

2

Wenn ich richtig verstanden habe, ist hier, was Sie tun können. Um hinzuzufügen, verwenden Sie so etwas wie dieses:

r.table("items").get(id).update({ 
    stock: r.row("stock").add(2) 
}).run(self.connection, callback); 

zu subtrahieren:

r.table("items").get(id).update({ 
    stock: r.row("stock").sub(3) 
}).run(self.connection, callback); 

aktualisieren

So sind die Werte in der Datenbank tatsächlich Strings. Sie müssen sie zuerst erzwingen. Dies sollte funktionieren:

r.table("items").get(id).update({ 
    stock: r.row("stock").coerceTo("number").add(2).coerceTo("string") 
}).run(self.connection, callback); 
+0

Erste Danke. Aber wenn ich den Code ausprobiere, fügt er einfach 2 neben den ursprünglichen Wert, also statt 2 + 2 = 4, habe ich: 22 – RocketFuel

+0

Also ist der Wert, den Sie in der Datenbank haben, eine Zeichenfolge, nicht int. Tut mir leid, habe das nicht bemerkt. Du willst es so? Vielleicht konvertieren Sie es einfach mit 'parseInt'. – katafrakt

+0

'parseInt' wird nicht funktionieren, aber ich habe meine Antwort aktualisiert. – katafrakt

Verwandte Themen