业务背景
- 有一个老师表
teacher一个学生表student
- 一个老师关联多个学生
- 现在要查询老师的信息,以及所有学生的信息
我的代码
// 老师表
const teacherSchema = new mongoose.Schema({
name: { type: String },
students: [{ type: mongoose.Schema.Types.ObjectId, ref: 'student' }],
});
// 学生表
const studentSchema = new mongoose.Schema({
name: { type: String },
teacher: { type: mongoose.Schema.Types.ObjectId, ref: 'teacher' },
});
const Teacher = mongoose.model('teacher', teacherSchema);
const Student = mongoose.model('student', studentSchema);
(async function test() {
// 新增一个老师
const t = await Teacher.create({ name: '张老师' });
// 新增一个学生
const s = await Student.create({
name: '李四',
teacher: t._id,
});
// 将学生关联到老师
t.students.push(s);
await t.save();
// 查询老师信息
const teachers = await Teacher.find().populate('students');
console.log(teachers);
}());
输入结果
[
{ students: [ [Object] ],
_id: 5c69e591510ea44574287fea,
name: '张老师',
__v: 1 } ]
问题
- 如果一个老师对应一千个学生,难道要把1000个学生给
push到老师的students属性里?这也太夸张了吧?
t.students.push(s);写法是不对的,应该是t.students.push(s._id);