1) AJAX-запросы везде и всегда обрабатываются ровно так же, как и обычные. В чем ваш вопрос — как отличить AJAX от не-AJAX? как послать клиенту JSON?
2) Как-то так:
var send = require('./models/send.js');
app.get('/send', function(req, res) {
send(function (err, data) {
if (err) {
return res.send(500, 'Error happened')
} else {
res.render('main', data);
}
})
});
С поправкой на callback-hell, если в базу надо сходить много раз:) (решается модулем async).
3) Зачем в одном файле? роуты, контроллеры, служебные миддлвари — все это можно и нужно раскидывать по разным файлам и даже по разным папкам. В app.js только создается инстанс и ему скармливаются настройки и роуты.
P.S. Посмотрите на
https://github.com/madhums/node-express-mongoose-demo, возможно, часть вопросов это прояснит. Только не копируйте бездумно, там есть и спорные решения.