1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tmkmk-mysql-convert

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

mysql-convert

Введение

Преобразование JSON в MySQL-запрос из определённого формата.

Архитектура ПО

├─dist                ts编译后存放路径,其结构基本与src一致,没啥好看的
├─src                 源码目录
|─test                测试开发目录
|  |─dev.ts           测试用代码很少一看就懂
│  └─其他文件          没啥说的.偶尔测试会用

Инструкция по установке

npm i tmk-pay

Использование

  1. npm i @mac-xiang/mysql-convert
  2. import {Literal, TmkMysql} from("tmk-mysql-convert");
  3. const tmkMysqlConvert = new TmkMysql(param);

Описание параметра

Свойство Тип Описание
field typeField Структура данных таблицы, подробности см. ниже в описании typeField.
table string Имя таблицы базы данных.
limit int Ограничивает количество полученных данных при поиске данных, чтобы избежать перегрузки машины. По умолчанию: 100.
offset int Смещение начала поиска данных. По умолчанию: 0.
auto string[] Поля в базе данных, которые автоматически присваиваются значения (не допускается вставка значений, содержащих эти поля). По умолчанию: ["id"].
read string[] Только для чтения полей в базе данных. По умолчанию: равно auto.
showField string[] При запросе к базе данных, если не указано требуемое имя поля для отображения, содержит имена полей. По умолчанию: все поля в field.
[propName: string]: [number, any?, any?];

Тип данных typeField:

Пример:

{
  поле 1: [минимальное значение, максимальное значение, является ли целым числом], // Если член равен 3, это означает, что этот столбец является числовым типом, если третий параметр не равен 0/пустому, то это целое число, иначе — float.
  поле 2: [длина данных, способ усечения после превышения длины] // Если элемент равен 2, это указывает на то, что этот столбец текстовый. Длина данных — это максимальная длина данных, а способ усечения после превышения длины определяет, как усекать данные. Если (способ усечения после превышения длины) окончательное значение — взять первые данные длины. Иначе — взять последние данные длины, равной длине данных.
}

На шаге 3 получаем tmkMysqlConvert; const sql=tmkMysqlConvert.sql(object); // sql — это окончательный SQL-оператор. Значения членов объекта:

Метод: метод, диапазон значений следующий; по умолчанию: 0

Значение Действие
0 | get | r | read Поиск
1 | up | u | update Модификация
2 | add | c | create Добавление/вставка
3 | del | d | delete Удаление

Таблица: если используется new Literal("string"), значение полностью равно string. В противном случае возьмите ранее созданное имя таблицы объектов.

Где: условие, массив, члены данных следующие:

Примечание: Если нет значения по умолчанию, оно должно быть обязательным. В противном случае эти данные будут недействительными.

Член Тип данных Значение по умолчанию Описание
Поле Строка Нет Имя поля базы данных
Логика "и" | "или" Не "или" равно "и" Связь с предыдущим условием, первое условие принудительно равно "и"
Метод ">", "<", ">=", "<=", "!=", "in", "nin", "regexp", "like" "=" Логический оператор MySQL, если значение равно in/nin, то проверяется, является ли value массивом. Если это не массив, то это условие отбрасывается. Если это массив, то каждый элемент проверяется в соответствии со значением поля. Для числовых типов очень строго, если член не может быть преобразован в числовой тип, то он отбрасывается. Для текстовых типов выполняется кодирование JSON и гарантируется соответствие MySQL. Распознаётся как строковое кодирование. Если это regexp, то value должен быть строкой, и его следует скопировать в качестве регулярного выражения. Если это like, то значение value преобразуется в строку и перед ним и после него добавляется «%».

| value | string | number | (string | number)[] | Literal | 无 | Если тип данных — Literal, метод не действует. Дальнейшая проверка не производится. Если поле числового типа, проверяется, находится ли значение в заданном интервале (больше или равно минимальному значению, меньше или равно максимальному значению), и в зависимости от того, требуется ли округление, значение округляется или нет. Если оно соответствует условию, берётся значение, иначе оно игнорируется. Если поле не числового типа, его содержимое форматируется в JSON и переводится в строку, чтобы гарантировать, что содержимое в MySQL-запросе является строкой. |

value: действует при изменении/добавлении.

Изменить/добавить соответствующие данные. Имя свойства — это имя поля, а значение — текущее установленное значение. В первую очередь проверяется, есть ли имя свойства в списке полей при создании экземпляра, если нет, оно игнорируется. Для нечисловых типов сначала данные преобразуются в формат JSON, затем выполняется специальная кодировка символов MySQL. Если данные текстовые, проверяется, превышает ли их длина допустимую длину поля. Если да, то в соответствии с правилами обрезается строка до заданной длины. Если метод добавляет данные, после завершения проверки поля заполняются следующим образом: числовые типы заполняются нулём, текстовые типы — пустой строкой.

limit:int по умолчанию: значение, установленное при создании объекта, ограничение длины данных. Действует при поиске/изменении данных.

offset:int по умолчанию: значение, установленное при создании объекта, начальное смещение данных. Действует при поиске/изменении данных.

other: Literal, по умолчанию: пусто. Из соображений безопасности это значение должно быть типа Literal.

Это значение может быть добавлено только вручную на бэкенде. Это значение будет добавлено перед MySQL-запросом limit для выполнения пользовательских операций, таких как добавление сортировки.

Вклад

Я один, но использовал множество пакетов.

Навыки

MySQL-запросы создаются на фронтенде, JSON отправляется на бэкенд. Затем бэкенд анализирует JSON как объект, значения передаются в SQL-метод, и возвращаемое значение становится SQL-запросом. Безопасность защищена от внедрения. Правила почти удовлетворяют большинству потребностей. Можно даже достичь функции объединения нескольких таблиц, конечно, нестандартным способом, используя Literal, который можно создать только с помощью new Literal("xxx").

Команды для загрузки пакета в npm: npm publish --registry http://registry.npmjs.org npm config set registry https://registry.npmjs.org npm publish --access public --registry https://registry.npmjs.org npm config set scope mac-xiang --global

npm version prerelease

npm version prepatch Не смейтесь, не запоминаю.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Преобразование JSON в формате в оператор SQL. Развернуть Свернуть
AGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tmkmk-mysql-convert.git
git@api.gitlife.ru:oschina-mirror/tmkmk-mysql-convert.git
oschina-mirror
tmkmk-mysql-convert
tmkmk-mysql-convert
master