首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.populate()返回空数组?

.populate()返回空数组?
EN

Stack Overflow用户
提问于 2022-04-21 20:13:48
回答 1查看 46关注 0票数 0

我正在做项目,我试图让用户的评论显示在页面上。但是,每当我运行我的应用程序时,它都会返回一个空数组,我也不知道为什么,getReviews函数没有问题,因为它正确地返回了所有内容,但是getUserReviews只是返回一个没有错误的空数组。我尝试过多种方法,但似乎无法理解

评审模型

代码语言:javascript
复制
    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;

用户模型

代码语言:javascript
复制
    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;

检讨路线

代码语言:javascript
复制
    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})
        })
        
    })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 20:18:44

您尝试使用字段查询userId审查集合,而Review集合的模型定义中没有userId字段。

也许你想查询author数组?在这种情况下,尝试如下:

代码语言:javascript
复制
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})
    })
    
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71960404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档