мангуст. население не работает - PullRequest
0 голосов
/ 10 мая 2018

Я использую nodejs / express и mongoose. Однако при попытке использовать .populate(...) в документе это не работает. Вот мой код:

У меня есть эта схема для пользователя:

const UserSchema = new Schema({

    ...

    friends: [{
        user: {
            type: Schema.Types.ObjectId,
            ref: 'users'
        },
        ...
    }],
    sentRequests: [{
        user: {
            type: Schema.Types.ObjectId,
            ref: 'users'
        },
        ...
    }],
    recievedRequests: [{
        user: {
            type: Schema.Types.ObjectId,
            ref: 'users'
        },
        ...
    }]
}
mongoose.model('users', UserSchema);

Затем, когда я пытаюсь показать все полученные запросы на страницу, я использую этот код:

router.get('/friendRequests', (req, res) => {
    User.findOne({
            _id: req.user.id // where req.user is the currently logged in user
    })
    .populate('recievedRequests.user')
    .then(curUser => {
        res.render('friends/friendRequests', {
            curUser: curUser
        });
    })
});

где User - модель, а req.user.id - идентификатор текущего пользователя, вошедшего в систему. Однако на веб-странице, когда я ссылаюсь на curUser.recievedRequests.user, он просто возвращает идентификатор пользователя, а не фактический объект пользователя. Кто-нибудь знает, что я тут не так делаю?

Спасибо.

РЕДАКТИРОВАТЬ - Пример

Для документа:

user1 = {
    _id: ObjectId("5ae94b0b2bb9383d4029d64b"),
    ...
    recievedRequests: [
        {"_id" : ObjectId("5ae94b5f29c86c4a343d2d0a") }
    ]        
}

и

user2 = {
    _id: ObjectId("5ae94b5f29c86c4a343d2d0a"),
    ...
}

Используя мой код выше для этого документа:

router.get('/friendRequests', (req, res) => {
    User.findOne({
            _id: user1.id
    })
    .populate('recievedRequests.user')
    .then(curUser => {
        res.render('friends/friendRequests', {
            curUser: curUser
        });
    })
});

Результаты в curUser.recievedRequests = [{ _id : 5ae94b5f29c86c4a343d2d0a }]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...