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

时间:2013-11-18 22:52:44

标签: json coldfusion 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>

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

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

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

1 个答案:

答案 0 :(得分: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>

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