从具有返回类型JSON的方法返回两个记录集?

vol*_*one 3 coldfusion json coldfusion-10

我有一个CFC,它包含一个运行一个存储过程然后输出两个结果集的方法/函数.像这样(缩短了阅读速度的代码):

 <cffunction name="OrdersandRegions" returntype="query" returnformat="JSON">
    <cfstoredproc procedure="GetUserInfo">
      <cfprocresult name = "UserOrders" resultset="1">
      <cfprocresult name = "UserRegions" resultset="2">
    </cfstoredproc>

    <!--- Currently only returning 1 resultset as JSON --->
    <cfreturn UserOrders> 
</cffunction>
Run Code Online (Sandbox Code Playgroud)

首先,我可以从单个方法返回结果集UserOrdersUserRegions结果集吗?

如果这不在CFC中并且在CFM页面内,那么我可以通过使用#UserOrders.OrderID##UserRegions.UserID#例如轻松访问这两个结果.

因为它是从CFC返回的,也是作为JSON数据返回的,我如何实现我想要实现的目标?

Lei*_*igh 10

函数只能返回单个对象.只需将查询放在另一个对象(如数组或结构)中,然后返回对象而不是查询.我会使用一个结构,因为它们比数组更直观.然后在您的JSON中,您可以通过键名访问每个结果集:"orders"或"regions".我现在无法对此进行测试,但这些方面的内容如下:

<cffunction name="OrdersandRegions" returntype="struct" returnformat="JSON">
    <cfstoredproc procedure="account_customer_EnrolmentsSEL" ...>
        <cfprocresult name = "Local.UserOrders" resultset="1">
        <cfprocresult name = "Local.UserRegions" resultset="2">
    </cfstoredproc>

    <cfset Local.result = {}>
    <cfset Local.result["orders"] = Local.UserOrders>
    <cfset Local.result["regions"] = Local.UserRegions>

    <cfreturn Local.result>
</cffunction>
Run Code Online (Sandbox Code Playgroud)

(旁注,请确保Local/var scope所有函数局部变量.)