2015-11-17 2 views
1

У меня есть структура модели, как показано ниже, в котором этап извлекается из другой моделиКак заполнить значения в формате массив в мангусте

var stageSchema = new Schema({ 
    Name: String, 
    Stage: { 
    type: Schema.ObjectId, 
    ref: 'StageName', 
    } 
}, { 
    collection: 'StageList' 
}); 

я написал запрос для извлечения данных с использованием мангусты, как показано ниже:

exports.findall = function(req, res) { 
    stage.find().populate({path:'Stage',select:'-_id'}).lean().exec(function(err, value1) { 
     res.send(value1); 
    }); 
}; 

Он отображает результат, как показано ниже

[{_id:213465465465465, Name: "AAA", Stage: {Value: "Stage1"}},{_id:213465465465465, Name: "BBB", Stage: {Value: "Stage2"}}] 

Но я хочу на сцену, чтобы быть в формате массива без ключа «Значение», как показано ниже:

[{_id:213465465465465, Name: "AAA", Stage: ["Stage1"]},{_id:213465465465465, Name: "BBB", Stage: ["Stage2"]}] 

Пожалуйста, помогите решить эту проблему. Заранее спасибо.

ответ

1

Чтобы изменить итоговый документ для этапа, чтобы быть в виде массива без ключа «Value», используйте map() метод в JavaScript, чтобы создать новый массив, в котором вы изменяете объекты в пределах массива следующим образом:

exports.findall = function(req, res) { 
    stage.find().populate({path: 'Stage', select: '-_id'}).lean().exec(function(err, results) { 
     var value1 = results.map(function (r){ 
      var stageVal = r.Stage.Value; 
      r.Stage = [stageVal]; 
      return r; 
     }); 
     res.send(value1); 
    }); 
}; 
+1

Большое спасибо ... Это работает как шарм .. Спасибо еще раз ... – user3211705

+0

@ user3211705 Не беспокойтесь, рад помочь :) – chridam