Как я могу заполнить массив, содержащий ObjectId как элементы? - PullRequest
0 голосов
/ 26 января 2020

У меня есть любимая. js модель, в которой блюда представляют собой массив ObjectId. Мне удалось заполнить пользователя (также содержит ObjectId) его данными, но я не могу сделать то же самое для блюд, так как в массиве нет объектов.

const favoriteSchema = new Schema({
user:{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
},
dishes: [mongoose.Schema.Types.ObjectId]
},{
timestamps: true
})
var Favorite = mongoose.model('Favorite',favoriteSchema)
module.exports = Favorite

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

favoriteRouter.route('/')
.get(authenticate.verifyUser,(req,res,next)=>{
Favorites.findOne({"user":req.user._id})
.populate('dishes')
.populate('user')
.then((favorite)=>{
    res.setHeader('Content-Type','application/json')
    res.setStatus = 200
    res.json(favorite)
})
.catch((err)=>{
    next(err);
})
}

Я хочу, чтобы вывод был следующим:

До заполнения:

{
"dishes": [
    "5e2c30b910e3ff15d85ffd7e",
    "dnj4k60d1822785e2d5c603"
],
"_id": "5e2d5c6032f0a60d182d971c",
"user": "5e2d5c603dnj4k60d182278v",
"createdAt": "2020-01-26T09:31:12.267Z",
"updatedAt": "2020-01-26T09:31:13.021Z",
"__v": 1
}

После заполнения:

{
"dishes": [
    {
      //populated content as object
       },
    {
      //populated content as object
       }
],
"_id": "5e2d5c6032f0a60d182d971c",
"user": {
    "firstname": "",
    "lastname": "",
    "admin": true,
    "_id": "5e289e47d48a6016ec233078",
    "username": "admin",
    "__v": 0
},
"createdAt": "2020-01-26T09:31:12.267Z",
"updatedAt": "2020-01-26T09:31:13.021Z",
"__v": 1
}

1 Ответ

0 голосов
/ 26 января 2020

Наконец я нашел способ заполнения массива ObjectId.

favoriteRouter.route('/')
.get(authenticate.verifyUser,(req,res,next)=>{
Favorites.findOne({"user":req.user._id})
.populate('user')
.populate({        //Populating the dishes
    path:'dishes',
    model:'Dish'
})
.then((favorite)=>{
    res.setHeader('Content-Type','application/json')
    res.setStatus = 200
    res.json(favorite)
})
.catch((err)=>{
    next(err);
})
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...