Node.js редактор данных - Пользовательская / Уникальная проверка для нескольких столбцов - PullRequest
1 голос
/ 04 февраля 2020

Я использую редактор данных и node.js. Validator.dbUnique () позволяет мне проверить значение перед вставкой, если значение уникально в этом столбце. Ссылка https://editor.datatables.net/manual/nodejs/validation

new Field( 'groups.name' )
new Field( 'groups.product_id' ),
    .validator( Validator.dbUnique() )
new Field( 'groups.type' )
new Field( 'groups.status' );       

Что мне нужно, так это проверка нескольких столбцов. Поэтому вставляйте новую запись, только если product_id НЕ имеет тип = 1 и статус = 2.

Вот пример php, объединяющий несколько столбцов https://datatables.net/forums/discussion/57729/unique-validation-for-multiple-columns

->validator( function($editor, $action, $data){
    if ($action === Editor::ACTION_CREATE || $action === Editor::ACTION_EDIT){
        foreach ($data['data'] as $pkey => $values ){
            $count = $editor->db()->query('select')->get('*')->table('teachers_subjects')
                ->where('teachers_subjects.teacher', $values['teachers_subjects']['teacher'])
                ->where('teachers_subjects.subject', $values['teachers_subjects']['subject'])
                ->exec()
                ->count();                      
            if ($count == 1){
                return 'This selection is already in the database.';
            }
        }
    }
})

Но как это сделать с node.js?

Rf. https://editor.datatables.net/manual/nodejs/validation#Global -validators

1 Ответ

0 голосов
/ 05 февраля 2020

Что работает, например ...

.validator( async (editor, action, data) => {
  if (action === 'create') {
    for (let [key, value] of Object.entries(data.data)) {
      let check = await editor
        .db()
        .from('groups')
        .where('groups.product_id', value.groups.product_id)
        .where('groups.type', value.groups.type)
        .where('groups.status', '=', '2');

      if (check.length > 0) {
        return 'Record already exists!';
      }
    }
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...