Однако по мере роста моего проекта мои обработчики маршрутов начинают выглядеть беспорядочными — полными необработанных строк 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 (без Sequelize, Prisma и т. д.), но я также хочу, чтобы мой код выглядел структурированным, удобным в обслуживании и тестируемым.
Каковы некоторые рекомендации или архитектурные шаблоны для организации необработанных SQL-запросов? проект Node.js?
Подробнее здесь: https://stackoverflow.com/questions/797 ... en-working
Мобильная версия