rethinkdb中具有可变字段的对象

时间:2014-03-17 11:53:36

标签: rethinkdb

在rethinkdb中,我想根据字符串变量创建或修改包含字段的对象。但是rethinkdb在{key: 42}{"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"

1 个答案:

答案 0 :(得分:2)

您可以使用coerceTo

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

下一个版本(1.12 - 本周即将发布?)引入了一个新术语r.object,无需coerceTo