Javascript 如何更新mongoose模式中的字段以及模式中数组中的新推送?
我的应用程序中有两个Javascript 如何更新mongoose模式中的字段以及模式中数组中的新推送?,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我的应用程序中有两个模式。详情如下: 培训师单一评级模式: trainerID: String, userID: String, rating: Number, review: String, addedOn: String, }; const TrainerSingleRating = mongoose.model( "TrainerSingleRating", trainerSingleRating );``` trainerID: S
模式。详情如下:
培训师单一评级模式:
trainerID: String,
userID: String,
rating: Number,
review: String,
addedOn: String,
};
const TrainerSingleRating = mongoose.model(
"TrainerSingleRating",
trainerSingleRating
);```
trainerID: String,
averageRating: Number,
ratings: [trainerSingleRating],
};
const TrainerRatings = mongoose.model("TrainerRatings", trainerRatings);```
培训师评分模式:
trainerID: String,
userID: String,
rating: Number,
review: String,
addedOn: String,
};
const TrainerSingleRating = mongoose.model(
"TrainerSingleRating",
trainerSingleRating
);```
trainerID: String,
averageRating: Number,
ratings: [trainerSingleRating],
};
const TrainerRatings = mongoose.model("TrainerRatings", trainerRatings);```
我正在使用一个函数更新和创建数据库中的文档。
下面是我的函数代码:
function saveTrainerRatings(trainerID, userID, ratings, review) {
const date = moment().format("DD MMM YYYY");
const trainerSingleRating = new TrainerSingleRating({
trainerID: trainerID,
userID: userID,
rating: ratings,
review: review,
addedOn: date,
});
TrainerRatings.findOne({ trainerID: trainerID }, function (
err,
foundRatingList
) {
const oldAverageRating = foundRatingList.averageRating;
const newAverageRating = (oldAverageRating + parseInt(ratings)) / 2;
const trainerRatings = new TrainerRatings({
trainerID: trainerID,
averageRating: ratings,
ratings: [trainerSingleRating],
});
if (err) {
console.log(err);
} else {
if (!foundRatingList) {
trainerRatings.save();
} else {
const oldAverageRating = foundRatingList.averageRating;
foundRatingList.ratings.push(trainerSingleRating);
foundRatingList.averageRating.update(newAverageRating);
foundRatingList.save();
}
}
});
trainerSingleRating.save();
}
因此,每次用户给培训师评分时,都会创建并保存新文档,并将其推送到trainer rating
模式中的评分数组中
我需要根据所有评分计算平均评分。目前,我正试图通过在每次创建新文档时更新平均评级来解决此问题。但问题是,我收到一个错误,说foundRatingList.averageRating.update不是一个函数
如何解决此错误?或者是否有任何解决方法将新文档推送到评级数组
,同时更新平均值
谢谢你的建议