在json对象中访问函数作为值

时间:2015-11-02 21:31:19

标签: javascript json node.js rethinkdb

我有一个json对象

"a1":
{
"b1": "val1",
 "b2": "function() {return null}",
 "c1": "{}"
}

需要传递此函数以运行rethink-db查询。需要传递此函数a1.b1

r.db(database).table(table).indexCreate(indexname, a1.b2, a1.c1)

当我运行查询时,我收到错误消息:'预期类型为FUNCTION但找到DATUM:\ n" function(){return null;}"',

请建议解决此问题。

2 个答案:

答案 0 :(得分:1)

一方面,你通常不应该将函数作为JSON发送,这是你问题的根源。但是,暂时忽略这一点,您可以执行eval

r.db(database).table(table).indexCreate(indexname, eval('('+a1.b2+')'), {});

尽管谨慎eval。存在安全问题等。

对于从字符串中评估函数的其他一些方法,我建议您查看this question

答案 1 :(得分:-2)

您需要从引号中解开函数。该错误似乎是在说它获取一个String(你传入的)而不是一个函数。

尝试 "a1": { "b1": "val1", "b2": function() {return null} }

如果您无法控制输入JSON,那么您需要评估al.b2并将其传入。