Как я могу очистить внутренний код Node.js без использования ORM при работе напрямую с SQL?MySql

Форум по Mysql
Ответить
Anonymous
 Как я могу очистить внутренний код Node.js без использования ORM при работе напрямую с SQL?

Сообщение Anonymous »

Я создаю серверную часть Node.js, используя простой SQL (без ORM, только mysql2, завернутый в небольшой помощник).
Однако по мере роста моего проекта мои обработчики маршрутов начинают выглядеть беспорядочными — полными необработанных строк SQL, встроенных в JavaScript.
Например, этот маршрут извлекает данные конфигурации путем соединения двух таблиц (функции и разрешения):

Код: Выделить всё

router.get("/config", async (req, res) => {
const sql = `
SELECT
\`function\`.\`function_key\` AS \`key\`,
GROUP_CONCAT(DISTINCT \`permission\`.\`role_id\` ORDER BY \`permission\`.\`role_id\` ASC) AS permission
FROM \`function\`
LEFT JOIN \`permission\` ON \`function\`.\`function_id\` = \`permission\`.\`function_id\`
GROUP BY \`function\`.\`function_id\`
`;

const { err, rows } = await db.async.all(sql, []);

if (err) {
console.error(err);
return res.status(500).json({
code: 500,
msg: "Database query failed"
});
}

const config = rows.map(row => ({
key: row.key,
permission: row.permission
? row.permission.split(',').map(id => Number(id))
: []
}));

return res.status(200).json({
code: 200,
config
});
});
Хотя это работает нормально, я чувствую, что серверная часть выглядит как набор операторов SQL, склеенных вместе с помощью JavaScript.
Я хочу продолжать использовать простой SQL (без Sequelize, Prisma и т. д.), но я также хочу, чтобы мой код выглядел структурированным, удобным в обслуживании и тестируемым.
Каковы некоторые рекомендации или архитектурные шаблоны для организации необработанных SQL-запросов? проект Node.js?

Подробнее здесь: https://stackoverflow.com/questions/797 ... en-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»