传递表格以调用 read() JavaScript 函数的语法

Syntax for passing tables to call read() JavaScript functions

将 table 作为参数传递给外部 JavaScript 函数并将 return 值存储在变量中的语法是什么?

* table user
| UserId | UserType    | UserRoles        |
| 123    | 'Regional'  | { Role : Ninja } |

我在想 * def uid = call read('base64-encoder.js') { user } 函数定义为

function(uid) {
  var Base64 = Java.type('java.util.Base64');
  var encoded = Base64.getEncoder().encodeToString(uid.bytes);
}

但这给出了一个:

ParserException: Unexpected End of File position 7: null

如果要在数据库 table 中保存 JavaScript 对象,可以将 JavaScript 值转换为 JSON。 JSON 内容是一个字符串,您可以轻松将其保存到其中。示例:

  // Convert to JSON
  var jsonDatas = JSON.stringify(yourDatas);

  // Convert to a JavaScript value
  var javascriptDatas = JSON.parse(jsonDatas);

它有效,但我不建议在数据库中保存 JSON 内容。

在这种情况下,将空手道 table 传递给外部 JavaScript 函数的语法是

* def uid = call read('base64-encoder.js') user

只是为函数参数添加一个space。

JavaScript就是不知道如何处理它得到的列表项。因此,为了使此函数不会在类型检查时失败,table 行首先必须转换为这样的字符串:

* string me = user[0]
* def uid = call read('base64-encoder.js') me

这样 java 就不会在 table 上阻塞,您将从编码字符串中得到格式正确的 JSON 字符串:

function(uid) {
  var Base64 = Java.type('java.util.Base64');
  var encoded = Base64.getEncoder().encodeToString(uid.bytes);
  return encoded;
}