Мангуст не толкает в массив - PullRequest
0 голосов
/ 02 февраля 2019

Мой код:

Модель:

var mongoose = require('mongoose');

var eventSchema = new mongoose.Schema({
    'eventTitle': String,
    'location': String,
    'startDate': String,
    'endDate': String,
    'startTime': String,
    'endTime': String,
    'createdBy': mongoose.Schema.Types.ObjectId, // Here we will store the _ID from the user EOSP.
    'attendants': {
        'seekers': [mongoose.Schema.Types.ObjectId],
        'employers': [],
    },
    'isFinished': {'type': Boolean, 'default': false},
    'uploadedResumes': Number,
    'downloadedResumes': Number,
    'survey': {
        'seekers': [],
        'employers': [],
        'host': [],
    }
});

module.exports = mongoose.model('event', eventSchema);

Маршрутизатор:

.post(async (req, res) => {
    let {user, params} = req;
    let {eid, uid} = params;
    eid = mongoose.Types.ObjectId(eid);
    uid = mongoose.Types.ObjectId(uid);

    user = user ? user : await Account.findById(uid).catch(e => console.log(e));
    if (user.accType.toLowerCase() === 'seeker') {
        const {
            rating,
            recommendation,
            websiteEaseOfUse,
            chatHelpfulness,
            skillsSuitability,
            tips,
        } = req.body;
        const data = {
            userId: user._id,
            rating,
            recommendation,
            websiteEaseOfUse,
            chatHelpfulness,
            skillsSuitability,
            tips,
        };
        console.log(data);
        Event.findOneAndUpdate({'_id': eid}, {
            $push: {
                'survey.seeker': {
                    userId: user._id,
                    rating,
                    recommendation,
                    websiteEaseOfUse,
                    chatHelpfulness,
                    skillsSuitability,
                    tips,
                },
            },
        }, {$upsert: true,}).then(r => console.log('pushed', r.survey.seekers)).catch(e => console.log(e));
    }
    const title = await Event.findById(eid).then(r => r.eventTitle).catch(e => console.log(e));
    const event = await functions.getCurrentEvent();
    res.render('survey/thanks', {
        title: title,
        user: user,
        event: event
    })
});

Так что этот код должен делать, это принимать данные, переданные в маршрутизаторчерез сообщение (это на самом деле работает), и поместите его в массив (это не работает).

Вот журнал:

pushed []

Так что мой вопрос, почему, хотя консольговорит, что прошло (console.log ('push')), он не помещает туда данные?Чего мне не хватает?

1 Ответ

0 голосов
/ 02 февраля 2019

Вы используете неправильный ключ, используйте survey.seekers вместо survey.seeker

  .post(async (req, res) => {
        let {user, params} = req;
        let {eid, uid} = params;
        eid = mongoose.Types.ObjectId(eid);
        uid = mongoose.Types.ObjectId(uid);

        user = user ? user : await Account.findById(uid).catch(e => console.log(e));
        if (user.accType.toLowerCase() === 'seeker') {
            const {
                rating,
                recommendation,
                websiteEaseOfUse,
                chatHelpfulness,
                skillsSuitability,
                tips,
            } = req.body;
            const data = {
                userId: user._id,
                rating,
                recommendation,
                websiteEaseOfUse,
                chatHelpfulness,
                skillsSuitability,
                tips,
            };
            console.log(data);
            Event.findOneAndUpdate({'_id': eid}, {
                $push: {
                    'survey.seekers': {
                        userId: user._id,
                        rating,
                        recommendation,
                        websiteEaseOfUse,
                        chatHelpfulness,
                        skillsSuitability,
                        tips,
                    },
                },
            }, {$upsert: true,}).then(r => console.log('pushed', r.survey.seekers)).catch(e => console.log(e));
        }
        const title = await Event.findById(eid).then(r => r.eventTitle).catch(e => console.log(e));
        const event = await functions.getCurrentEvent();
        res.render('survey/thanks', {
            title: title,
            user: user,
            event: event
        })
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...