Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在anguler(mongoose/mongodb)中更新模型,特别是作为模型属性的对象数组_Javascript_Mongodb_Mongoose_Mean - Fatal编程技术网

Javascript 在anguler(mongoose/mongodb)中更新模型,特别是作为模型属性的对象数组

Javascript 在anguler(mongoose/mongodb)中更新模型,特别是作为模型属性的对象数组,javascript,mongodb,mongoose,mean,Javascript,Mongodb,Mongoose,Mean,我有以下模式: 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: Stri

我有以下模式:


   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});
        });
    },

我一路进入控制器方法,没有抛出错误,但for循环似乎从未运行过

我尝试了许多不同的方法来更改投票,例如key.vote+=1;关键字:投票+1;等等,我试着保存整个作者,而不仅仅是用key表示的特定引用

这个项目的“挑战”是只使用一个模式,所以我不能使用普通的Quote.findOne({u id:request.body.id}),因为没有Quote模式

这里的任何帮助都将不胜感激。

我想:

在for循环中,它应该是for(let key OF quotes){而不是In

运行for循环后的其他更改:

key.note+=保存

author.save();而不是key.save()