我试图操纵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;
})
},
答案 0 :(得分:0)
您的变量名称中有拼写错误,manufacturer_tabs_list
而非manufacturer_tab_list
。
修改强>
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);
})
},
答案 1 :(得分:0)
可能想尝试一下:
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来返回manufacturer_tabs集合属性的单个制造商对象。然后我克隆它,这样就不再是模型对象了(如果是帆1.0,那么你就不需要_.cloneDeep(),并且可以改变数据,如manufacturer.manufacturer_tabs.name ='Tab 2';)。
我会在第一个错误判断之后立即进行一些额外的错误处理,例如:
if (!manufacturer || !manufacturer.manufacturer_tabs || !manufacturer.manufacturer_tabs.length > 1) {
return res.serverError('Can\'t find data');
}
当然,对你有用的东西。干杯