如何在Mongoose关联查询中仅返回评论用户的name字段?
解决方法
修改嵌套populate的配置,添加select选项指定仅获取name字段即可,修改后的代码如下:
// const cookieParser = require("cookie-parser") const Post = require("../models/post"); // const User= require("../models/user") module.exports.home= async(req, res)=>{ try{ console.log(req.cookies) const posts = await Post.find({}) .populate("users") .populate({ path:'comments', populate:{ path:'user', select: 'name' // 新增该行,指定仅返回name字段 } }) .exec(); // console.log(posts.content); // console.log(posts); // res.cookie("user_id", 25); return res.render('home', { title: "Home Page ", posts:posts, }) } catch(err){ console.log("error in sending feed", err); return res.redirect("back"); } }
修改说明
在嵌套的populate({ path: 'user' })配置中添加select: 'name'参数后,Mongoose关联查询用户数据时,会仅提取并返回name字段,自动过滤掉email、password等不需要的字段。
内容的提问来源于stack exchange,提问作者Himanshu Gupta
相关产品推荐
相关产品推荐

