Coldfuson CFScript "setSQL" метод не найден - PullRequest
0 голосов
/ 17 августа 2011

У меня есть компонент Coldfusion, в котором есть метод с именем getColumnNames

Это просто запрашивает таблицу MySQL и возвращает список столбцов:

remote string function getColumnNames() {
    qProcessCars = new Query();
    qProcessCars.setDataSource('#APPLICATION.dsn#');
    qProcessCars.setSQL('SELECT * FROM sand_cars WHERE 1 LIMIT 1');
    qProcessCars = qProcessCars.Execute().getResult();

    return qProcessCars.columnlist;
}

Если я удаленно получаю к нему доступ в браузере с помощью page.cfc? Method = getColumnNames , то я получаю обратно ожидаемый список столбцов.

Однако, если я пытаюсь получить к нему доступ извнутри другого метода внутри компонента я получаю сообщение об ошибке

remote string function otherFunction() {
   ...
   sColumns = getColumnNames();
   ...
}

Дамп ошибки для приведенного выше кода возвращает сообщение «Метод setSQL не найден».

Так что кто-нибудь может мне помочьвыясните, почему он работает как удаленный вызов, но не при вызове из другого метода внутри того же компонента.

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Проблема может быть вызвана какими-то условиями гонки. Если вы делаете несколько вызовов, которые мешают, в какой-то момент qProcessCars уже может быть результатом запроса, поэтому вызов метода невозможен.

Я бы попытался сделать переменную qProcessCars локальной областью действия (var qProcessCars = new Query(); ) и / или попытаться использовать другое имя переменной для результатов запроса.

Следующий возможный шаг - заключить код создания / выполнения запроса в именованный замок.

0 голосов
/ 18 августа 2011

А, я снова ответил на свой вопрос.Извините.

Я использовал то же имя qProcessCars , где в компоненте я не поместил var перед ними.

Я не знаю, ПОЧЕМУ это было причиной проблемы, но это было.Может быть, setSQL может быть вызван только один раз для запроса объекта?

...