I am currently working on making a GET request on my backend that maps out all reviews based on the item number attached to the review. I've made a few dummy reviews that share the same item number (but have different _id values) and am trying to figure out how to create this GET request.
I can get all reviews to map out in general but not by item number
My current code block is this and I'm getting the error
TypeError: Cannot read properties of undefined (reading 'get')
router.get("/:id", async (req, res) => {
const populateQuery = [
{
path: "user",
select: ["username"],
},
{
path: "reviews",
select: ["item"],
populate: { path: "user", select: ["username"] },
},
]
const reviews = await Review.find({})
response.json(reviews.map((review) => review.toJSON()))
})
An example review would be:
_id:615323ee97dc7d1960350e33
text:"This could've been worse but I'm glad they actually tried this time"
item:168
_id:615b95dfd6a4fc3814139ad4
text:"Delete this review and this game"
item:168
_id:615b968e9dafdbead0de3fde
text:"Witcher is amazing"
item:4062
Basically, I want the function to show the ones with item:168 mapped out and separate from the Witcher review.
My model schema for reviews is this
import mongoose from "mongoose"
const { ObjectId } = mongoose.Schema.Types
const reviewSchema = new mongoose.Schema(
{
text: {
type: String,
required: true,
maxlength: 500,
},
author: {
type: ObjectId,
ref: "User",
},
created: {
type: Date,
default: Date.now,
},
item: {
type: Number,
required: true,
}
},
{ timestamps: true }
)
const Review = mongoose.model("Review", reviewSchema)
export default Review