Как манипулировать данными JSON в Sails JS Controller - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь манипулировать данными JSON и возвращать измененные данные. Тем не менее, он дает ошибку ReferenceError: manufacturer_tab_list is not defined, хотя переменная определена.

getfields: function(req, res){
        Manufacturers.find({id: '5af01c0e712f4c05b27af99c'})
        .populate('manufacturer_tabs')
        .exec(function(err, manufacturer_tabs){
            var manufacturer_tabs_list = res.json(manufacturer_tabs);
            manufacturer_tabs_list[1].name = 'Tab 2';
            if(err){
                return res.json(err);
            }
            return manufacturer_tab_list;
        })                                                         
    },

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Могу попробовать это:

getfields: function(req, res){

   Manufacturers.findOne({id: '5af01c0e712f4c05b27af99c'})
    .populate('manufacturer_tabs')
    .exec(function(err, manufacturer){
        if(err){
            return res.serverError(err);
        }
        var manufacturer_tabs_list = _.cloneDeep(manufactuurer.manufacturer_tabs);
        manufacturer_tabs_list[1].name = 'Tab 2';
        return res.json(manufacturer_tab_list);
    })                                                         
},

Я использую findOne вместо find для возврата одного объекта изготовителя, для которого коллекция factory_tabs является свойством. Затем я клонирую его, чтобы он больше не являлся объектом модели (если у него версия 1.0, то вам не понадобится _.cloneDeep (), и он может просто изменять данные, например, factoryr.manufacturer_tabs.name = 'Tab 2';).

Я бы добавил дополнительную обработку ошибок сразу после первой ошибки, например:

if (!manufacturer || !manufacturer.manufacturer_tabs || !manufacturer.manufacturer_tabs.length > 1) {
    return res.serverError('Can\'t find data'); 
}

Все, что работает для вас, конечно. Приветствия

0 голосов
/ 08 мая 2018

У вас есть опечатка в имени переменной, это manufacturer_tabs_list не manufacturer_tab_list.

EDIT

getfields: function(req, res){
    Manufacturers.find({id: '5af01c0e712f4c05b27af99c'})
    .populate('manufacturer_tabs')
    .exec(function(err, manufacturer_tabs){
        manufacturer_tabs[1].name = 'Tab 2';
        if(err){
            return res.json(err);
        }
        return res.json(manufacturer_tabs);
    })                                                         
},
...