DreamFactory 2 脚本 - 需要使用 GET post_process 或事件脚本快速启动

DreamFactory 2 Scripting - Need A Jump Start With GET post_process Or Event Scripting

我正在尝试学习如何使用 DreamFactory 2,但可用的信息不多。他们的教程假定您已经了解服务器端的内容。我没有,也找不到像样的教程。 JavaScript 编码,但我也是新手。

我可以从 Angular 开始进行基本的 CRUD。但是,现在我想从 table 获取数据,但从另一个 table 替换其中的一些数据并将其发送到 front-end。我与 child table 建立了一个虚拟关系,它作为 parent 数据中的 object 包含在 JSON 负载中,正如预期的那样。

{
  resource: [
    "item_name": 12,
    "thing_by_thing_id": 
      "thing_name": "thing"
  ]
}

现在我需要做以下事情:

1) 在从 table.

返回数据的 front-end GET 调用之后使用脚本捕获数据

2) 将 item_name 中的值替换为 thing_name.

中的值

3) 将修改后的 JSON object 发送到 UI (Angular) 以响应来自 Angular 的 GET 通过 DF api.

我可以在 Angular 中做到这一点,但我想学习如何在 DF 中做到这一点。使用我假设的节点脚本。我还假设这个 myService._table.{table_name}.get.post_process 是它应该在的地方但不确定,因为还有一个事件过程 api.

我该怎么办?

经过反复试验和反复查看 DF 教程,我终于弄明白了。

1) thing_by_thing_id由DF在table的Add Virtual Relation部分创建,在DF的Schema部分检索。这是将外部 table 数据导入主数据对象的地方。 DF 有一个用于执行此操作的视频教程,但它已过时。在主 table 中创建此外键关系,而不是视频中的外键关系。不用设置外键,就是这个关系

2) myService._table.{table_name}.get.post_process 是正确的脚本 API.

3) 下面是从数据库中检索到 json 对象后对其进行循环的代码。 DF 教程没有告诉我们 API 来捕获数据,因此您必须从他们的示例中弄清楚。对于 post 处理脚本,您需要这样的:event.response.content.resource。

function replaceWithThingNames( record ) {

  for (var i = 0; i < record.length; i++) {
    var thing_name = record[i].thing_by_thing_id.thing_name;

    record[i].item_name = thing_name;
  }
  return record;    
}

if (event.response.content.resource) {  // use 'content' for response
  const record = event.response.content.resource;  // DF scripting API
  replaceWithThingNames( record );
}