我正在處理專案,我正在嘗試讓用戶評論顯示在頁面上。但是,每當我運行我的應用程式時,它都會回傳一個空陣列,我不知道為什么,我對 getReviews 函式沒有任何問題,因為它正確地回傳了所有內容,但 getUserReviews 只是回傳一個沒有錯誤的空陣列。我已經嘗試了多種方法,但似乎無法得到它
審查模型
const mongoose = require("mongoose");
const Review = mongoose.model(
"Review",
new mongoose.Schema({
movieId: String,
reviewId: String,
content: String,
sentimentScore: String,
author: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
],
reponseTo: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
]
})
);
module.exports = Review;
用戶模型
const mongoose = require("mongoose");
const User = mongoose.model(
"User",
new mongoose.Schema({
username: String,
email: String,
password: String,
roles: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Role"
}
]
})
);
module.exports = User;
查看路線
const express = require('express');
const router = express.Router();
const {authJwt} = require("../middlewares");
const Review = require("../models/review.model")
router.use(function(req, res, next) {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
router.post("/addReview", [authJwt.verifyToken], (req, res) => {
const review = new Review(req.body)
review.save((err, review) => {
if(err) return res.json({success:false, err})
Review.find({'_id': review._id})
.populate('author')
.exec((err, result) => {
if(err) return res.json({success: false, err})
return res.status(200).json({success: true, result})
})
})
})
router.post("/getReviews", [authJwt.verifyToken], (req, res) => {
Review.find({"movieId": req.body.data})
// console.log("ID ", req.body.data)
.populate('author')
.exec((err, reviews) => {
if(err) return res.status(400).send(err)
res.status(200).json({success: true, reviews})
})
})
router.post("/getUserReviews", [authJwt.verifyToken], (req, res) => {
Review.find({"userId": req.body.data})
.populate({
path: 'author.user',
model: 'Review'})
.exec((err, reviews) => {
if(err) return res.status(400).send(err)
res.status(200).json({success: true, reviews})
})
})
uj5u.com熱心網友回復:
您嘗試使用欄位查詢Review集合,而Review集合在其模型定義中沒有欄位。userIduserId
也許你想查詢author陣列?在這種情況下,試試這個:
router.post("/getUserReviews", [authJwt.verifyToken], (req, res) => {
Review.find({ author: req.body.data })
.populate('author')
.exec((err, reviews) => {
if(err) return res.status(400).send(err)
res.status(200).json({success: true, reviews})
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/462408.html
上一篇:如何將陣列轉換為mongodb/mongoose聚合中的物件?
下一篇:CastError:模型“XXXX”的路徑“_id”處的值“XXXXXXXXXX”(型別字串)轉換為ObjectId失敗
