Member 13874858 Ответов: 1

А как же я?.. Изменение инструкции SQL в зависимости от выбранного пользователем параметра


Всем привет,

Я делаю карту с помощью Carto.js и я пытаюсь обновить SQL-запрос в зависимости от того, что пользователь выбрал из выпадающего меню. Например, если пользователь выбирает "перейти к производству фруктов", то SQL-запрос слоя должен измениться на:

SELECT * FROM indicators WHERE fruit ILIKE 'Yes'


Что я уже пробовал:

Carto недавно обновился, так что там все форматирование API .js изменилось. Используя их документы, вот как я добавил слой SQL до сих пор:

//Add SQL layer
		const indicatorsSource = new carto.source.SQL(`
		  SELECT *
		    FROM indicators WHERE grain ILIKE 'Yes'     
		`);		

		const indicatorsStyle = new carto.style.CartoCSS(`
		  #layer {
		    polygon-fill: #50ae31;
    		polygon-opacity: 0.65;
		  }
		`);
		const indicators = new carto.layer.Layer(indicatorsSource, indicatorsStyle);


Как вы можете видеть, я понятия не имею, как изменить переменную функции ("зерно" в Примере) в зависимости от того, что было выбрано пользователем.

1 Ответов

Рейтинг:
1

Mike V Baker

Является ли это строковым разделителем, который здесь является проблемой? Чтобы вставить одинарные кавычки в строку, используйте двойные кавычки на крайних точках строки.

const indicatorsSource = new carto.source.SQL("
		  SELECT *
		    FROM indicators WHERE grain ILIKE 'Yes'     
		");

Однако я не знаю о "зерне" по имени "Да". Зерно-пшеница, рожь, овес. О, и теперь, когда я думаю об этом... где подстановочный знак, который должны использовать LIKE и ILIKE? Получение зерна, начинающегося с буквы "w", было бы следующим

const indicatorsSource = new carto.source.SQL("
		  SELECT *
		    FROM indicators WHERE grain ILIKE 'w%'     
		");

Это больше того, что ты ищешь?

ХТХ,
Майк


0x01AA

Не уверен, просто предположение: я думаю, что он больше ищет, как обрабатывать различные названия столбцов "зерно"/"фрукты" в части WHERE своего SQL