1) Есть файл index.js и db.js с логикой подключения к бд
const app = require('express')()
async function main() {
const db = await require('./db')
app.use('/api', require('./api')(db))
}
main()
2) Есть файл роута /api/index.js
const app = require('express')()
module.exports = function (db) {
const a = 1
const b = 2
function f() {}
function b() {}
app.get('/', () => {})
app.post('/', () => {})
return app
}
Экспортируем функцию, чтобы передать db
а) Где правильнее располагать переменные с импортом модулей (в экспортируемую функцию или перед экспортом)
б) Где создавать переменные используемые в разных роутах (в экспортируемую функцию или перед экспортом)
в) Где создавать функции. Одна функция используется в одном роуте (в самом роуте, в экспортируемой функции или перед module.exports - в глобальной области), есть которые используются в нескольких.
Если объявлять переменную, например let userId в глобальной области и менять ее в мидлваре, какова вероятность, что получится так:
обращается 1й пользователь - в мидлваре записывается айди - обращается 2й пользователь - записывается айди - 1й пользователь попадает в роут, где требуется этот айди, он будет 2го пользователя? Или все настолько однопоточно и быстро, что 2й пользователь не успеет перезаписать userId прежде, чем 1й попадет в роут.
Спасибо за ответы