递增和递减RethinkDB单值

时间:2017-03-13 23:36:43

标签: node.js rethinkdb

RethinkDB 增量和减少单值

需要一些帮助,我正在学习Nodejs和Rethinkdb。

目前我正在使用此RethinkDB代码执行更新操作。

r.table('items').get(id).update(item).run(self.connection, function(err, result) {
    if(result && result.replaced === 1) {
        res.send(item);
    }
    else if(err) {
        debug("[ERROR] updateItem %s:%s\n%s", err.name, err.msg, err.message);
        res.send({error: 'An error occurred when updating the item with id: ' + id});
    }
    else {
        debug("[ERROR] updateItem (%s): %j", id, result);
        res.send({error: 'An error occurred when updating the item with id: ' + id});
    }
});

现在问题是:如何通过递增其值来更新行中的值?例如,让我们说一下汽车的库存。所以连续我会:

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

现在让我说我制作一个表单来控制将从库存中添加或删除多少辆汽车。例如,假设我想添加3辆新法拉利。如何更新值库存,将库存增加3,总共5,而不是将3更换为3.还可以说我卖了2辆法拉利,我怎样才能减少价值所以股票价值将是0。

请原谅我可怜的英语。不是我的母语。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,那么你可以做什么。要添加,请使用以下内容:

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

要减去:

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

<强>更新

因此,数据库中的值实际上是字符串。你需要先强制他们。这应该有效:

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