猫鼬填充子文档返回null

时间:2020-04-16 22:42:29

标签: mongodb mongoose

我想使用“填充”方法用猫鼬填充查询。我正在使用最新/稳定的猫鼬版本。我的架构的相关部分定义如下。问题是,当我尝试填充const sessions = await Session.find().populate({ path: "coach", select: "name email" })时,我总是得到"coach": null

我希望它简单地返回与我的查询相匹配的会话以及教练(用户)对象。我在这里做什么错了?

UserSchema

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({

  email: {
    type: String,
    required: [true, "email is required"],
    unique: [true, "email must be unique"],
    match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/, "Invalid email"]
  },
  name: {
    type: String,
    required: [true, "name is required"]
  },
  (....)
});

export const User = mongoose.model('User', UserSchema);

SessionSchema

const mongoose = require('mongoose');

const SessionSchema = new mongoose.Schema({
  coach: { type: mongoose.Schema.ObjectId, ref: 'User', required: true },
  location: {
    street: { type: String }
  },
  (......)
});

export const Session = mongoose.model('Session', SessionSchema);

2 个答案:

答案 0 :(得分:0)

我认为教练类型应为以下类型(Schema.Types似乎丢失了):

  coach: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },

答案 1 :(得分:0)

我找到了。对不起大家。代码还可以。问题是我正在使用具有“ id”属性而非“ _id”属性的条目为数据库播种。因此,“ id”没有正确保存,因此响应实际上是null