在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"
?
答案 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
。