1) Ajax запросы обрабатывать так же как и обычные запросы. Функция send_mail из примера вероятно должна принимать callback:
var send_mail = require('./models/send_mail.js');
app.post('/send_mail', function(req,res){
send_mail(req.body, new Date(), function(err) {
if (err)
res.send({result: false, message: err.message}); // отправляется json
else
res.send({result: true});
});
});
2) Доступ к БД в node.js почти всегда асинхронный, соответственно для получения данных драйвер БД предоставляет callback, который также должна принимать ваша функция send:
var send = require('./models/send.js');
app.get('/send', function(req,res){
send(function(err, data) {
if (err) throw err; // или как-то по другому обрабатывать
res.render('main', data);
});
});
3) В одном файле можно разве что очень простое приложение писать, ну или какой-то пример. В реальных проектах все разбивается на модули, примеров море
на GitHub.
----
Функция send примерно так должна выглядеть:
function send(cb) {
// ... соединение с БД предполагается в переменной db
var collection = db.collection('documents');
collection.find({}).toArray(cb);
}