RethinkDB Node.js - вычитает значения из каждого поля в документе, используя другой объект - PullRequest
0 голосов
/ 19 октября 2018

Учитывая таблицу, которая содержит объекты, которые выглядят примерно так:

{
  someString: 'something',
  foo: 100,
  bar: 53,
  baz: 230,
  ignore: 'everything but numbers'
}

и данный объект JSON, который содержит только числовые значения:

{
  foo: 20,
  bar: 15,
  baz: 100
}

Мне нужен запрос ReQL длявычтите все значения в данном объекте JSON из значений в выбранном документе.Однако подвох в том, что я не знаю, какие поля находятся в данном объекте JSON, он может содержать одно, все или ни одно из числовых полей (оно никогда не будет содержать нечисловых полей или полей, которые не находятся висходная таблица вообще).

Я понимаю, что могу легко получить нужный документ и вычесть значения самостоятельно и обновить документ новыми значениями, но эти значения постоянно меняются.Так что, если я сделаю это, то может случиться так, что значения могут измениться между получением документа и его обновлением, что приведет к вставке неправильных значений.Поэтому я хотел бы сделать фактическое вычитание в запросе.

1 Ответ

0 голосов
/ 19 октября 2018
r.db("db").table("table").get("id")
  .update({
    "foo":r.row("foo").sub(20),
    "bar":r.row("bar").sub(15),
    "baz":r.row("baz").sub(100)
  })  

Затем вы можете изменить это обновление в своем коде в зависимости от того, какие значения у вас есть в данном JSON-объекте.

...