Как добавить поля из другой модели в ответ JSON в экспресс? - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над этим экспресс-приложением и хочу узнать, есть ли способ добавить поля из другой схемы в ответ JSON?Вот код
Это первая схема

const restaurantSchema = mongoose.Schema({
title: { type: String, required: true},
prepration_time: {type: String,required:true},
timings: {type: String,required:true},
listed: {type: Boolean},
});

Это вторая схема

    const menuSchema = mongoose.Schema({
    dish: {type: String,required:true},
    category: {type: String,required:true},
    price: {type: String,required:true},
    restaurant: { type:mongoose.Schema.Types.ObjectId,ref: 'Restaurant' , require: true }

});

Я использовал тип схемы, чтобы установить отношение, и я хочу отобразить схему меню какполе в схеме ресторана.

Вот функция маршрутизатора:

    router.get('',(req,res,next)=>{
    Restaurant.find()
    .then(result =>{
        console.log(result);
        res.status(200).json({
            message: "Fetched",
            restaurants: result
        });
    });    
});

1 Ответ

0 голосов
/ 18 июня 2019
const restaurantSchema = mongoose.Schema({
  title: { type: String, required: true},
  prepration_time: {type: String,required:true},
  timings: {type: String,required:true},
  listed: {type: Boolean},
  menu : {type: Schema.types.ObjectId, ref:'menus'}
});

Убедитесь, что ref должно быть названием вашей коллекции. При добавлении данных в коллекцию restaurant обязательно добавьте идентификатор документа меню в menu field в restaurant collection пример:

{
  title: 'Restaurant name',
  prepration_time: '45 min',
  timings: '12:24pm',
  listed: true,
  menu : '123sfererdfd23422' // _id from menu collection
}

Тогда запрос, как этот

Restaurant.find()
.populate('menu')
.then(result =>{
    console.log(result);
    res.status(200).json({
        message: "Fetched",
        restaurants: result
    });
});  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...