【问题标题】:Referencing code-created datasources in Lucee在 Lucee 中引用代码创建的数据源
【发布时间】:2021-02-17 02:24:44
【问题描述】:

我使用代码在 Lucee 中创建了许多数据源。这是针对我们正在迁移到 Azure 的旧版 ColdFusion 应用程序,并且根据权力,他们希望在代码中创建 DSN,以便我们可以将 DSN 密码存储在密钥库中。我的那部分已经在工作了。

数据源看起来像这样:this.datasources["myDSN"]

如果,在代码 (Application.cfm) 中,我这样做:

<cfset myDSN = this.datasources["myDSN"]>

这将失败:

<cfquery name="whatever" datasource="#myDSN#">

失败并显示“找不到数据源 myDSN”。

但是,如果我这样做:

<cfquery name="whatever" datasource="#this.datasources['myDSN']#">

...它工作正常。

有解决办法吗?最后只检查这个应用程序,在 115 个文件中出现了 368 次 datasource=。我宁愿不必进行批量搜索/替换。变量“myDSN”会失败对我来说毫无意义。

由于使用了多个数据源,我不能只设置默认数据源并完全删除 datasource= 属性;即使那样,它仍然需要大量搜索/替换。

我一定错过了什么。我已经阅读了有关数据源的 Lucee 文档,但没有帮助。谢谢!

【问题讨论】:

  • 你真的在使用Application.cfm吗?这可能是您的问题的原因。考虑切换到application.cfc
  • 这是一个旧版应用程序。为了让您了解它的年龄,其中仍有“parameterExists()”的实例。我会考虑切换,但他们有点坚持不对其进行“重大”更改。这是 Catch 22 中的一种情况。 :)
  • 您说数据源是“在代码中创建的”。你能展示你在哪里以及如何做到这一点吗?如果您使用的是 Application.cfm,则 this 范围不可用(因为它不是 CFC)。

标签: coldfusion lucee


【解决方案1】:

事实证明 Scott Stroz 是正确的。我切换到 Application.cfc,现在它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 2019-08-23
    • 1970-01-01
    • 2018-04-21
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多