Обновление модели в anguler (mongoose / mongodb), в частности, массив объектов, который является атрибутом модели - PullRequest
0 голосов
/ 21 января 2020

У меня есть следующая схема:


   const AuthorSchema = new mongoose.Schema({
        fullName: { type: String, required: [true, "Authors must have a full name"], minlength: [6, "Author's full name must have at least 6 characters"] },
        quotes: [{content: {type: String, minlength: [6, "Quotes should be six characters"]}, vote: {type: Number, default: 0}}],
    }, { timestamps: true });
const Author = mongoose.model('Author', AuthorSchema);
module.exports = Author

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

    upvote: function(req, res) {

        console.log("UPVOTE_CONTROLLER", req.body);
        var author = Author.findOne({_id: req.body.authid})
        .then(author =>{ (console.log(author))
            let quotes = author.quotes;
            for (var key in quotes){
                if (key._id == req.body.quoteid){
                    key.vote = key.vote + 1;
                    console.log("**UPDATED_QUOTE_BEFORE_SAVE", key)
                    return key.save();
                }
            }
        })
        .then(saveresult => res.json(saveresult))
        .catch(err => {
            console.log("****ERRROR HERE****");
            console.log(err);
            for (var key in err.errors) {
                req.flash('registration', err.errors[key].message);
            }
            res.json({errors: err.errors});
        });
    },

I Вникните в метод контроллера, ошибки не выдаются, но for l oop, кажется, никогда не запускается,

Я пробовал много разных способов изменения голосования ex. key.vote + = 1; ключевой голос +1; et c Я попытался сохранить всего автора, а не только указанную c цитату, представленную ключом.

«Задача» в этом проекте - сделать это, используя только одну схему, поэтому я не может использовать обычный Quote.findOne ({_ id: request.body.id}), так как нет схемы Quote.

любая помощь здесь будет признательна.

1 Ответ

0 голосов
/ 21 января 2020

Я понял это:

В for для l oop это должно было быть для (позвольте ключом кавычек) {вместо IN.

Другие изменения после выполнения команды l oop:

key.note + = save;

author.save (); вместо key.save ();

...