【发布时间】:2020-05-06 23:40:54
【问题描述】:
我有以下架构:
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;等我尝试保存整个作者,而不仅仅是键表示的特定引用。
这个项目的“挑战”是只使用一个模式来做到这一点,所以我不能使用正常的 Quote.findOne({_id: request.body.id}) 因为没有 Quote 模式。
我们将不胜感激。
【问题讨论】:
标签: javascript mongodb mongoose mean