Mongoose Заполнить возвращает ноль, когда ссылка помещается в подсхему - PullRequest
0 голосов
/ 15 октября 2018

У меня есть 3 схемы 1. Пользователь 2. SignedToEvent 3. События

Пользователь содержит информацию о пользователе и имеет отношение к SignedToEvents.SignedToEvents связывает пользователя с событием.SignedToEvent вкладывается в User следующим образом:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const SignedToEvents = new Schema({
    event : { type: Schema.Types.ObjectId, ref: 'event' },
    eventSignedDate: {type : Date, default : Date.now()},
    isActive : Boolean
})

SignedToEvents.set('toObject', { getters: true });
SignedToEvents.set('toJSON', { getters: true });

const UserSchema = new Schema({
    email: String,
    password : String,
    age : Number,
    sex : String,
    createdAt: { type: Date, default: Date.now },
    signedToEvents : [SignedToEvents]
})

UserSchema.set('toObject', { getters: true });
UserSchema.set('toJSON', { getters: true });

module.exports = mongoose.model('user', UserSchema, 'users');

И схема событий выглядит следующим образом

const mongoose = require('mongoose');

const Schema = mongoose.Schema;
const eventSchema = new Schema({
    shortId : String,
    name: String,
    description : String,
    organization : String
})
module.exports = mongoose.model('event', eventSchema, 'events');

В моем API у меня есть вызов к коллекции User:

User.findOne({_id : mongoose.Types.ObjectId(req.userId)})
    .select("email")
    .populate("event")
    .exec()
    .then(docs=>{
        console.log(docs)
        res.status(200).send(docs.signedToEvents)
    });

Теперь я надеялся получить совокупную коллекцию User, SignedToEvent и Event.Однако это не так.

Возвращает только идентификатор пользователя и адрес электронной почты.

/ Спасибо

1 Ответ

0 голосов
/ 15 октября 2018

Решением было указать на мое свойство SignToEvent, а затем использовать .event для доступа к модели событий.Как это:

User.findOne({_id : mongoose.Types.ObjectId(req.userId)})
    .select("email")
    .populate("signedToEvents.event")
    .exec()
    .then(docs=>{
        console.log(docs)
        res.status(200).send(docs.signedToEvents)
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...