mysql-convert
Преобразование JSON в MySQL-запрос из определённого формата.
├─dist ts编译后存放路径,其结构基本与src一致,没啥好看的
├─src 源码目录
|─test 测试开发目录
| |─dev.ts 测试用代码很少一看就懂
│ └─其他文件 没啥说的.偶尔测试会用
npm i tmk-pay
Описание параметра
Свойство | Тип | Описание |
---|---|---|
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 | get | r | read | Поиск |
1 | up | u | update | Модификация |
2 | add | c | create | Добавление/вставка |
3 | del | d | delete | Удаление |
Примечание: Если нет значения по умолчанию, оно должно быть обязательным. В противном случае эти данные будут недействительными.
Член | Тип данных | Значение по умолчанию | Описание |
---|---|---|---|
Поле | Строка | Нет | Имя поля базы данных |
Логика | "и" | "или" | Не "или" равно "и" | Связь с предыдущим условием, первое условие принудительно равно "и" |
Метод | ">", "<", ">=", "<=", "!=", "in", "nin", "regexp", "like" | "=" | Логический оператор MySQL, если значение равно in/nin, то проверяется, является ли value массивом. Если это не массив, то это условие отбрасывается. Если это массив, то каждый элемент проверяется в соответствии со значением поля. Для числовых типов очень строго, если член не может быть преобразован в числовой тип, то он отбрасывается. Для текстовых типов выполняется кодирование JSON и гарантируется соответствие MySQL. Распознаётся как строковое кодирование. Если это regexp, то value должен быть строкой, и его следует скопировать в качестве регулярного выражения. Если это like, то значение value преобразуется в строку и перед ним и после него добавляется «%». |
| value | string | number | (string | number)[] | Literal | 无 | Если тип данных — Literal, метод не действует. Дальнейшая проверка не производится. Если поле числового типа, проверяется, находится ли значение в заданном интервале (больше или равно минимальному значению, меньше или равно максимальному значению), и в зависимости от того, требуется ли округление, значение округляется или нет. Если оно соответствует условию, берётся значение, иначе оно игнорируется. Если поле не числового типа, его содержимое форматируется в JSON и переводится в строку, чтобы гарантировать, что содержимое в MySQL-запросе является строкой. |
Изменить/добавить соответствующие данные. Имя свойства — это имя поля, а значение — текущее установленное значение. В первую очередь проверяется, есть ли имя свойства в списке полей при создании экземпляра, если нет, оно игнорируется. Для нечисловых типов сначала данные преобразуются в формат JSON, затем выполняется специальная кодировка символов MySQL. Если данные текстовые, проверяется, превышает ли их длина допустимую длину поля. Если да, то в соответствии с правилами обрезается строка до заданной длины. Если метод добавляет данные, после завершения проверки поля заполняются следующим образом: числовые типы заполняются нулём, текстовые типы — пустой строкой.
Это значение может быть добавлено только вручную на бэкенде. Это значение будет добавлено перед 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 )