Procházet zdrojové kódy

Fix flow for getting all products

Tati před 9 roky
rodič
revize
7f4e8ef83a

+ 1 - 3
back/api/products/controller.js

@@ -3,7 +3,5 @@
 var Product = require('./model');
 
 module.exports.all = function (req, res, next) {
-    Product.find({}, res.languageProjection).then(function (ps) {
-        res.send(ps);
-    })
+    return Product.find({});
 }

+ 2 - 1
back/api/products/index.js

@@ -4,7 +4,8 @@ var express = require('express');
 var router = express.Router();
 var language = require('./../../components/middlewares/language');
 var controller = require('./controller');
+var response = require('./../../components/middlewares/response');
 
-router.get('/all', language, controller.all);
+router.get('/all', response(controller.all));
 
 module.exports = router;

+ 24 - 0
back/components/middlewares/response.js

@@ -0,0 +1,24 @@
+var R = require('ramda');
+var LANGS = [ 'ES', 'EN' ];
+var DEFAULT_LANG = 'ES';
+
+function selectLang(lang) {
+    return function(x) {
+        var x_ = x.toObject();
+        x_ = R.merge(x_, R.prop(lang, x_));
+        return R.omit(LANGS, x_);
+    }
+}
+
+module.exports = function (fn) {
+    return function (req, res, next) {
+        var projection = req.headers.lang ? req.headers.lang : DEFAULT_LANG;
+
+        return fn(req, res, next).then(function (xs) {
+            var result = R.is(Array, xs) ? xs.map(selectLang(projection)) : selectLang(projection)(xs);
+            res.send(result);
+        })
+    } 
+}
+
+