【问题标题】:Is it possible to return multiple entity collections from a server side method in Wakanda?是否可以从 Wakanda 的服务器端方法返回多个实体集合?
【发布时间】:2025-12-03 02:40:01
【问题描述】:

我有以下服务器端方法:

model.Public.someMethod = function(){
  var collections = {};
  collections.collection1 = ds.SomeClass.query("ID > 10");
  collections.collection2 = ds.SomeOtherClass.query("ID > 10");
  return collections;
}
model.Public.someMethod.scope = "public";

当我从浏览器调用此函数时,我没有收到错误或响应。我测试了复杂的对象,它们返回正常,我返回了一个也可以正常工作的实体集合 (collections.collection1)。

我能否在一个请求中返回一组实体集合?谢谢。

为了更清楚,我在前端使用WAF和“onSuccess”参数。

【问题讨论】:

  • 我能够返回一个包含两个集合的对象(与您尝试的方式相同),无论是否使用 onSuccess 函数。您是否尝试调试 serverSide 以确保对象“集合”在服务器返回之前包含 2 个集合?在 onSuccess 函数中,你在 event.result 对象中得到了什么?

标签: javascript wakanda


【解决方案1】:

对一个dataClass做类似的方法,直接用REST API调用,结果返回的对象只包含实体数组,不包含实体集合。

例子:

model.Employee.methods.employeesBySalary = function() {
    var high = ds.Employee.query("salary > 100000");
    var low = ds.Employee.query("salary < 40000");
    return {high: high, low: low};
};

结果:

{
  "result": {
    "high": [
      {
        "__KEY": "56033",
        "__STAMP": 111,
        "ID": 56033,
        "lastName": "BUDADO",
        "firstName": "TIMOTHY",
        "salary": 149541
      },
      ...
    ],
    "low": [
      {
        "__KEY": "55938",
        "__STAMP": 111,
        "ID": 55938,
        "lastName": "RATUSA",
        "firstName": "IRWIN"
      },
      ...
    ]
  }
}

因此,您实际上无法返回集合严格意义上的,但您可以返回它们的内容,而无需分页等集合功能。

【讨论】: