我有一个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;}"',
请建议解决此问题。
答案 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并将其传入。