提问者:小点点

我无法填充路线(猫鼬)


我正在一个配置文件路线上工作,从数据库中获取所有注册的配置文件。 我只想从用户模型中填充“姓名”和“头像”字段。 。Populat('model',['name','avatar'])不工作。

我要填充的路由:

router.get("/", async (req, res) => {
  try {
    const profiles = await Profile.find().populate("User", ["name", "avatar"]);
    res.send(profiles);
  } catch (error) {
    console.log(error.message);
    res.status(500).send("Server Error !");
  }
});

用户模型

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  password: {
    type: String,
    required: true,
  },
  avatar: {
    type: String,
  },
  date: {
    type: Date,
    default: Date.now,
  },
});

module.exports = User = mongoose.model("User", UserSchema);

剖面模型

const mongoose = require("mongoose");
let requiredString = { type: String, required: true };
const ProfileSchema = new mongoose.Schema({
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User",
  },
  githubusername: String,
  status: requiredString,
  skills: [requiredString],
  experience: [
    {
      title: requiredString,
      company: requiredString,
      location: String,
      from: {
        type: Date,
        required: true,
      },
      to: Date,
      current: {
        type: Boolean,
        default: false,
      },
      description: String,
    },
  ],

  date: {
    type: Date,
    default: Date.now,
  },
});

module.exports = Profile = mongoose.model("Profile", ProfileSchema);

输出没有填充姓名和头像!


共1个答案

匿名用户

按照下面的方法试一试。

router.get("/", async (req, res) => {
  try {
    const profiles = await Profile.find().populate({path:"User",select: {'name', 'avatar'} });
    res.send(profiles);
  } catch (error) {
    console.log(error.message);
    res.status(500).send("Server Error !");
  }
});