您需要填充已回答的字段。
const = questions = await Question.find().populate('answered');
,
您需要这样填充:(这也是排除用户密码的好主意)
Question.find({})
.populate("user","-password")
.populate("answered.user","-password");
我还有一些代码建议:
我们通常在模型(例如User)中使用首字母大写和单数名称。
user.js
const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema({
name: {
type: String,required: true
},email: {
type: String,required: true,unique: true
},password: {
type: String,date: {
type: Date,default: Date.now
}
});
const User = mongoose.model("User",UserSchema);
module.exports = User;
question.js
const mongoose = require("mongoose");
const QuestionSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,ref: "User"
},question: {
type: String
},name: {
type: String
},answered: [
{
user: {
type: mongoose.Schema.Types.ObjectId,ref: "User"
}
}
]
});
const Question = mongoose.model("Question",QuestionSchema);
module.exports = Question;
您可以使用以下查询填充用户:
const Question = require("../models/question");
router.get("/question",async (req,res) => {
const questions = await Question.find({})
.populate("user","-password");
res.send(questions);
});
以下是示例输出:
[
{
"_id": "5dc12a6aa875cd0ca8b871eb","user": {
"_id": "5dc129eda875cd0ca8b871e8","name": "user 1","email": "user1@gmail.com","date": "2019-11-05T07:51:09.625Z","__v": 0
},"question": "question 1","name": "question 1 name","answered": [
{
"_id": "5dc12a6aa875cd0ca8b871ed","user": {
"_id": "5dc12a00a875cd0ca8b871e9","name": "user 2","email": "user2@gmail.com","date": "2019-11-05T07:51:28.892Z","__v": 0
}
},{
"_id": "5dc12a6aa875cd0ca8b871ec","user": {
"_id": "5dc12a0aa875cd0ca8b871ea","name": "user 3","email": "user3@gmail.com","date": "2019-11-05T07:51:38.060Z","__v": 0
}
}
],"__v": 0
}
]
本文链接:https://www.f2er.com/3162906.html