Mein Code funktioniert, aber ich verstehe, dass es am besten ist, dicke Modelle und dünne Controller zu haben.Wie strukturiere ich meinen Nodejs Code? Fettes Modell/Skinny Controller
Allerdings verwende ich 3 verschiedene Modelle und habe leider meinen Controller fett gemacht. Was ist der beste Weg, um diesen Code zu organisieren (mit fetten Modell/Skinny Controller-Konzept)? Ich habe die Code-Struktur gelesen, aber ich bin ein wenig unsicher bezüglich der Best Practices.
Controller:
var Product = require('../models/product');
var Collection = require('../models/collection');
var Vote = require('../models/vote');
exports.topSearch = function(req, res) {
console.log(req.body, "search product")
Product.search({
query_string: {
query: req.body.search
}
},req.body.searchObject,
function(err, results) {
if (err) console.log('ERR', err);
if (results) {
var data = results.hits.hits;
Vote.find({
user: req.user._id
}, function(err, votes) {
if (!err) {
for (var i = 0; i < votes.length; i++) {
for (var j = 0; j < data.length; j++) {
if (data[j]['_id'] == votes[i]['product']) {
data[j]['voteId'] = votes[i]['_id'];
data[j]['userVote'] = votes[i]['vote'];
}
}
}
}
Collection.find({
user: req.user._id
}, function(err, collections) {
if (!err) {
for (var i = 0; i < collections.length; i++) {
for (var j = 0; j < data.length; j++) {
if (data[j]['_id'] == collections[i]['product']) {
console.log('match')
data[j]['collected'] = true;
data[j]['collectId'] = collections[i]['_id'];
data[j]['favorite'] = collections[i]['favorite'];
} else if (data[j]['_id'] !== collections[i]['product'] && data[j]['collected'] !== true) {
data[j]['collected'] = false;
}
}
}
res.send(data);
}
});
});
} else {
res.send({
errmsg: 'results not defined'
})
}
});
};
ich diese dann in meiner Route nennen:
app.post('/products-search', users.ensureAuthenticated, products.topSearch);