#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, и теперь он работает нормально.