Обновление встроенного документа Mongoose

У меня проблема с обновлением встроенного документа.

Мои определенные Схемы:

var Talk = new Schema({
    title: {
        type: String,
        required: true
    },
    content: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        required: true
    },
    comments: {
        type: [Comments],
        required: false
    },
    vote: {
        type: [VoteOptions],
        required: false
    },
});

var VoteOptions = new Schema({
    option: {
        type: String,
        required: true
    },
    count: {
        type: Number,
        required: false
    }
});

Теперь я хотел бы обновить vote.count ++ с заданным Talk идентификатором и VoteOption идентификатором. У меня есть следующая функция для выполнения этой работы :

function makeVote(req, res) {

    Talk.findOne(req.params.id, function(err, talk) {
        for (var i = 0; i < talk.vote.length; i++) {
            if (talk.vote[i]._id == req.body.vote) {
                talk.vote[i].count++;

            }
        }
        talk.save(function(err) {
            if (err) {
                req.flash('error', 'Error: ' + err);
                res.send('false');
            } else {
                res.send('true');
            }
        });
    });
}

Все выполняется, я возвращаю res.send ('true') , но значение счетчика не меняется.

Когда я делал console.log ] Я видел, что это изменило значение, но talk.save просто не сохраняет его в db.

Также я очень недоволен циклом, чтобы найти _id встроенного документа. В документации мангуста я прочитал о talk.vote.id (my_id) , но это дает мне ошибку из-за отсутствия функции id .

10
задан Talha Awan 31 May 2017 в 16:55
поделиться