【发布时间】:2020-09-05 14:14:20
【问题描述】:
我正在尝试计算当用户点击任意数量的星星时我传递给数据库的平均 5 星评级。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ratingSchema = mongoose.Schema({
userId: {
type: Schema.Types.ObjectId,
ref: 'User'
},
productId: {
type: Schema.Types.ObjectId,
ref: 'Product'
},
noOfStars: {
type: Number,
default: 0
}
},{timestamp: true})
const Rating = mongoose.model('Rating', ratingSchema);
module.exports = {Rating}
这是我创建的用于发送特定产品评级的模型。当用户点击星号时,星号、producID 和 userID 将被插入到数据库中。
import React,{useEffect,useState} from 'react';
const aggregate = require("../models/rating").Rating.aggregate;
const{Rating}=require('../models/rating');
exports.RatingAdd=(req,res) =>{
aggregate(
[
{
$group:
{
_id: "$productId"
}
}
]
)
}
这是我创建的控制器,用于检索特定产品的平均星级并将其显示在前端。我不明白如何获取相同产品 ID 的计数,然后将星值总数除以产品 ID 计数。我无法获得每个产品的正确平均值。我应该如何编辑我的代码以显示每个产品的平均星值并将平均星值和产品 ID 传递给我的前端?
【问题讨论】:
标签: node.js mongodb express mongoose mongodb-query