Валидация в nodejs

211
05 апреля 2018, 13:37

Подскажите как сделать валидацию и какие библиотеки используете ?

К примеру у меня есть модель категория у нее 2 поля name и url. name и url не могут быть пустыми и url уникальное поле.

У меня есть контроллер который достает нужные поля из запроса и передает их в сервис categoryService, я сделал таким образом, может есть какой то лучше способ:

  async createCategory (data) {
    const errors = saveCategoryValidation(data)
    if (Object.keys(errors).length) {
      const error = new Error('invalid category data')
      error.errors = errors
      throw error
    }
    const category = await knex('categories').insert(data)
    return category
  },

saveCategoryValidation:

export default async (data) => {
  const messages = {}
  if (_.isNil(data.name) || !data.name.length) {
    messages.name = 'Name is required'
  }
  if (_.isNil(data.url) || !data.url.length) {
    messages.name = 'Name is required'
  } else {
    const categories = await knex('categories')
      .select('id')
      .where('url', data.url)
    if (categories.length) {
      messages.url = 'Url already in use'
    }
  }
  return messages
}
READ ALSO
Как подключить mysql на js

Как подключить mysql на js

Как подключить MySQL в jsКак потом взаимодействовать с БД?

242
MySQL - выполнение запроса с 2.5 часов до 2.5 минут

MySQL - выполнение запроса с 2.5 часов до 2.5 минут

Есть запрос на MySQL БД, который отрабатывает 25 часа, хотя сама итоговая таблица pc в left join отрабатывает за несколько секунд:

216
Получить все товары по id категории

Получить все товары по id категории

Здравствуйте! Есть такой запрос к бд, который возвращает все товары:

270
Как получить определенное кол-во строк до необходимой выборки?

Как получить определенное кол-во строк до необходимой выборки?

Есть отсортированная выборка данныхИз этой выборки необходимо получить данные, которые соответствуют определенному условию (WHERE) + 5 записей...

232