Mongoose中find搭配populate无效,仅返回ObjectId问题求助
Mongoose populate 不生效问题解决
你的问题根源在于JobSchema中关联字段未指定ref属性,Mongoose不知道该从哪个模型中查询关联数据,所以populate操作无法生效。
修正后的JobSchema定义
需要给type和users字段添加ref,指定对应的模型名称(假设你的类型模型名为Type,用户模型名为User):
import { Schema, model } from "mongoose"; export const JobSchema = new Schema({ type: { type: Schema.ObjectId, ref: "Type" // 指定关联的模型名称 }, date: Date, needed: Number, users: [{ type: Schema.ObjectId, ref: "User" // 同样给users字段添加ref }], });
额外注意事项
- 确保
Type和User模型已经通过model()方法正确注册,比如:// 示例:Type模型的定义 const TypeSchema = new Schema({ /* 你的字段定义 */ }); export const Type = model("Type", TypeSchema); - 重新启动服务后,再执行你的查询代码:
const jobs = await Job.find().populate("type");
此时type字段应该会被填充为对应的Type文档数据,而不再是ObjectId。
内容的提问来源于stack exchange,提问作者gilbert-v
相关产品推荐
相关产品推荐

