У меня есть две основные схемы в моем проекте, Store и User.
Пользователь Коллекция, отображаемая в MongoDB Compass
, выглядит следующим образом:
_id : ObjectId("**5e830006c4cec2586875124b**")
hearts : Array
storeID : Array
email : "test@test.com"
name : "My name is Test"
photo : "fa75fa97-c5d8-4e63-a9ee-38441774a26e.jpeg"
slugAuthor : "my-name-is-test"
description : "My description is Test"
hash : "b841b82dcffdd0d517b5010d9ff2047ab447751a4e6dd573f9d55af..."
salt : "2bb0f785b134af11d7ca08d4086801fd880626498fbcf106c0df9a66"
__v : 0
Магазин коллекция, как показано в MongoDB Compass
, выглядит следующим образом:
_id : ObjectId("5e830050c4cec2586875124c")
tags : Array
name : "My activity is Test"
description : "My description us Test"
participants : 1
duree : 1
date : 2220-02-22T21:02:00.000+00:00
author : ObjectId("**5e830006c4cec2586875124b**")
created : 2020-03-31T08:33:20.234+00:00
slug : "my-activity-is-test"
__v : 0
Что мне нужно :
Когда я отображаю информацию о пользователе Я также хочу искать в каждом Магазине, который он создал.
Как видите, идентификатор пользователя находится в коллекции Магазина (author: ObjectId).
Мне нужно отобразить эту информацию (Пользователь + список магазинов который принадлежит Пользователю), когда я вхожу в маршрут http://..../store/my-name-is-test/5e830006c4cec2586875124b. В моем маршруте мне нужно отобразить как slugAuthor и «author: ObjectId». (это уже удалось).
То, что я уже пробовал (используя .populate ()):
В моей схеме магазина:
author: {
type: mongoose.Schema.ObjectId,
ref: 'User',
}
В моей пользовательской схеме:
listStores: [{
type: mongoose.Schema.ObjectId,
ref: 'Store'}],
В моем контроллере:
exports.myProfil = async (req, res) => {
const user = await User.findOne({slugAuthor: req.params.slugAuthor}).populate('listStores')
res.render('my-profil', {user});
};
Это дает мне доступ к следующим данным:
{
"hearts": [],
"listStores": [],
"_id": "5e830006c4cec2586875124b",
"email": "test@test.com",
"name": "My name is Test",
"photo": "fa75fa97-c5d8-4e63-a9ee-38441774a26e.jpeg",
"slugAuthor": "my-name-is-test",
"description": "My description is Test",
"__v": 0
}
Как видите, массив "listStores" пусто, но мне нужно заполнить все магазины, созданные этим пользователем.
Пожалуйста, будьте любезны помочь мне здесь,
Большое спасибо