【问题标题】:Returning two recordsets from a method with returntype of JSON?从返回类型为 JSON 的方法返回两个记录集?
【发布时间】:2013-11-18 22:52:44
【问题描述】:

我有一个 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 数据,所以我如何实现我想要实现的目标?

【问题讨论】:

    标签: json coldfusion coldfusion-10


    【解决方案1】:

    一个函数只能返回一个对象。只需将查询放在另一个对象中,例如数组或结构,然后返回 that 对象而不是查询。我会使用结构,因为它们比数组更直观。然后在您的 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 作用域所有函数局部变量。)

    【讨论】:

    • 太棒了!您是现在才想出来的,还是从过去的经验中知道如何解决这个问题?
    • 刚刚过去的经验。大多数开发人员迟早都会遇到这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多