1

在 rethinkdb 中,我想创建或修改具有基于字符串变量的字段的对象。{key: 42}但是 rethinkdb 在and之间没有区别{"key": 42}key将始终被解释为字符串文字。

举个例子,

r.expr(['a', 'b']).map(function(key) {
  return {key: 42}
})

返回

[{"key":42},{"key":42}]

但我想要

[{"a":42},{"b":42}]

以下查询通过手动构建表示 JSON 中的对象的字符串然后解析它来实现这一点,但它很容易出错并且通常似乎不是正确的方法。

r.expr(['a', 'b']).map(function(key) {
  return r.json(r.expr('{"').add(key).add('": 42}'))
})

那么,有没有防止 rethinkdb 解释key为的好方法"key"呢?

4

1 回答 1

3

您可以使用coerceTo

r.expr(['a', 'b']).map(function(key) {
  return r.expr([[key, 42]]).coerceTo("OBJECT")
}).run(conn, callback)

下一个版本(1.12——本周发布?)引入了一个新术语r.object,不再需要coerceTo.

于 2014-03-17T16:16:55.343 回答