Ich schreibe einen Express-basierten REST-Server. Ein Teil des Controller-Code ist wie folgt:Cleaner Ansatz für Express + Mongoose Request Handler mit Async-Modul
/*JSON Request format
{ params: {
order_id: <string>, //mandatory
sp_id: <string> , //optional
order_date: <string> //optional
}
}
either "sp_id" or "order_date" (or even both) would be part of request parameters.
*/
var mongoose = require('mongoose');
var orderSS = require('../models/order');
var sp = require('../models/serviceProvider');
var update_order = function(req, res) {
orderSS.findById(mongoose.Types.ObjectId(req.params.order_id), function(err, order) {
if (err){
return res.json({message:"error", code:500});
}
if (req.params.sp_id){
sp.findById(mongoose.Types.ObjectId(req.params.sp_id, function(err, serviceProvider)){
order.sp_name = serviceProvider.name;
if (req.params.order_date)
order.order_date = req.params.order_date;
order.save(function(err){
if(!err)
return res.json({message:"order update", code:200});
});
});
} else if (req.params.order_date){
order.order_date = req.params.order_date;
order.save(function(err){
if (!err)
return res.json({message: "order updated", code:200});
});
}
});
};
Ich habe die order.save() Funktion zweimal in unterschiedlichen Strömungs nennen, weil der asynchronen Art der Anrufe. Ich habe das Gefühl, dass das "asynchrone" Modul viel sauberer ist. Wenn jemand Anleitung dafür bekommen kann.