API Node.js с express & mysql - переопределить извлеченные параметры для правильного поиска в столбце

0

В моем URL-адресе я хочу иметь возможность искать столбцы "active" и "last_name"... с параметрами:

active
name

как это:

localhost:4001/api/v1/users/?active=1&name=Peter

users.js

var sql = "SELECT * from users";
var existingParams = ["active", "name"].filter(field => req.query[field]);

if (existingParams.length !== 0) { 
    sql += ' WHERE ';
    sql += existingParams.map(field => '${field} = ?').join(" AND ");
}       

... дает мне следующее:

SELECT * from users WHERE active = ? AND name = ? LIMIT 100 

Я получаю сообщение об ошибке, хотя... поскольку имя столбца в базе данных определяется как "last_name"... поэтому я хочу, чтобы в итоге получилось так:

SELECT * from users WHERE active = ? AND last_name = ? LIMIT 100 

... но сохраните параметр поиска в url 'name'. Как мне нужно изменить свой сценарий?

  • 0
    query.last_name = query.name добавить ключ фамилии вручную.
  • 0
    ... но .map (field => ${field} = ? ) определяет столбец для поиска. Он ищет в несуществующем столбце. Значения верны
Показать ещё 6 комментариев
Теги:
express

1 ответ

2
Лучший ответ

existingParams.map(field => {
  if (field === 'name') {
    field = 'last_name'
  }
  return '${field} = ?'
}).join(" AND ");

попробуйте это и дайте мне знать

  • 0
    Это сработало, спасибо!
  • 0
    @ Philipp, пожалуйста

Ещё вопросы

Сообщество Overcoder
Наверх
Меню