Ссылка на созданные кодом источники данных в Lucee

#coldfusion #lucee

#coldfusion #lucee

Вопрос:

Я создал несколько источников данных в Lucee с помощью кода. Это для устаревшего приложения ColdFusion, которое мы переносим в Azure, и, согласно полномочиям, они хотят, чтобы DSN создавались в коде, чтобы мы могли хранить пароли DSN в хранилище ключей. У меня эта часть уже работает.

Источники данных выглядят примерно так: this.datasources[«myDSN»]

Если в коде (Application.cfm) я делаю это:

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

Затем произойдет сбой:

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

Сбой с «datasource myDSN не найден».

НО, если я сделаю это вместо:

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

… это работает нормально.

Есть ли обходной путь для этого? При последней проверке только в этом одном приложении имеется 368 вхождений datasource= в 115 файлах. Я бы предпочел не выполнять массовый поиск / замену. Для меня не имеет смысла, что переменная «myDSN» завершится ошибкой.

Поскольку используется несколько источников данных, я не могу просто установить источник данных по умолчанию и полностью удалить атрибут datasource=; даже тогда для этого все равно потребуется массовый поиск / замена.

Должно быть, я что-то упускаю. Я прочитал документы Lucee по источникам данных, но это не помогло. Спасибо!

Комментарии:

1. Вы действительно используете Application.cfm ? Это может быть причиной вашей проблемы. Посмотрите на переключение на application.cfc

2. Это устаревшее приложение. Чтобы дать вам представление о том, сколько ему лет, в нем все еще есть экземпляры «parameterExists()». Я подумаю о переключении, но они довольно непреклонны в том, чтобы не вносить в него «существенных» изменений. Это одна из тех ситуаций с уловкой 22. 🙂

3. Вы говорите, что источники данных «созданы в коде». Можете ли вы показать, где и как вы это делаете? Если вы используете Application.cfm, то this область недоступна (поскольку это не CFC).

Ответ №1:

Оказывается, Скотт Строз был прав. Я переключился на Application.cfc, и теперь он работает нормально.