0

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

我可以从 Angular 做基本的 CRUD。但是,现在我想从一个表中获取数据,但是从另一个表中替换一些数据并将其发送到前端。我与该子表建立了虚拟关系,并且它作为预期的父数据内的对象包含在 JSON 有效负载中。

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

现在我需要执行以下操作:

1) 在从表中返回数据的前端 GET 调用之后,使用脚本捕获数据。

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

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

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

我该怎么办?

4

1 回答 1

0

我花了很多时间反复试验并一遍又一遍地查看 DF 教程,但我终于弄明白了。

1)thing_by_thing_id由DF在DF的Schema部分中要检索的表的Add Virtual Relation部分创建。这是将外部表数据导入主数据对象的地方。DF 有一个视频教程可以做到这一点,但它已经过时了。在主表中创建此外键关系,而不是视频中的外键关系。不需要设置外键,只要这个关系。

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

3) 下面是从数据库中检索到 json 对象后循环遍历它的代码。DF 教程没有告诉我们获取数据的 API,因此您必须从他们的示例中弄清楚。对于后期处理脚本,您需要: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 );
}
于 2018-01-25T23:56:55.900 回答