node.js - 如何使用 Node 和 MongoDB(Mongoose)在两个不同的模型中实现 findById
问题描述
我的系统中有两种不同的模型,如下所示:
StudentModel.js
const mongoose = require("mongoose");
const studentSchema = new mongoose.Schema({
email: {
type: String,
required: true,
},
role: {
type: String,
required: true,
},
});
const Student = mongoose.model("student", studentSchema);
module.exports = Student;
用户模型.js
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
},
passwordHashed: {
type: String,
required: true,
},
role: {
type: String,
required: true,
},
});
const User = mongoose.model("user", userSchema);
module.exports = User;
我想要的是在这两个模型中找到 findById,我该怎么做?目前,这是我拥有的代码,但它仅在用户模型之一中实现。
jwt.verify(token, "secret", async (err, decodedToken) => {
if (err) {
console.log(err.message);
} else {
let user = await User.findById(decodedToken.user);
const { email, role } = user;
res.json({ email, role });
}
}
如何在两个模型中实现 findById?提前致谢。
解决方案
您必须将 StudentModel _id 保存在 User 模型中,这将在您创建 User 模型时完成,您必须在您的 req.body 中传递 studenModel _id
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
},
passwordHashed: {
type: String,
required: true,
},
role: {
type: String,
required: true,
},
student: {
type: mongoose.Schema.ObjectId,
ref: 'student',
required: true
}
});
const User = mongoose.model("user", userSchema);
module.exports = User;
现在使用填充来获取学生数据
let user = await User.findById(req.params.id).populate({
path: 'student',
select: 'email role'
});
推荐阅读
- python - 执行分组后删除异常值
- python - 读取带盒装问号的 csv
- python-3.x - 发电机根据条件boto3插入或更新
- c++ - 是否可以在 C++ 中创建一个带有负数的 3 维数组
- react-native - 键盘滚动视图问题反应原生
- angular - MatAutoComplete - 当在输入中输入未知文本并按下“ENTER”键时,如何停止在 mat-chip-list 中打开 MatAutoComplete
- python - 神经网络在第一次迭代后表现奇怪
- verilog - 无法为模块创建符号文件,因为端口的类型不受支持
- elixir - Elixir - 将复杂 if 语句的结果分配给变量
- angular - 具有非空值的角度模板编译 TS2531 错误