模型查询后填充猫鼬文档的问题

Issues populating mongoose document after model query

第一次参加 SO 所以我希望一切顺利。

我在当前项目中使用 Mongoose,直到现在我还没有遇到任何问题。正如标题所述,在使用简单的 console.log 查询文档并验证该文档确实存在于数据库中之后,当我使用 populate 方法时,我无法获取文档的 object 引用来填充。

我正在研究一个简单的身份验证路由。我的客户文档分为两个 object 参考、登录和用户配置文件。在我的查询中,我正在搜索一个客户端文档,其中登录配置文件 object 参考 ID 与先前查询的登录配置文件的 ID 匹配。然后我想在客户端文档中填充用户配置文件和登录配置文件,然后 return 客户端文档。

我的控制台日志正在显示客户端文档,但似乎没有执行填充方法。代码如下。

const login = await LoginProfile.findOne({ email });
  if (login === null) {
    console.log("Account doesn't exist.");
  } else {
    let validPassword = await bcrypt.compare(password, login.password);
    if (!validPassword) {
      console.log("Email or Password is incorrect");
    } else {
      const clientDoc = await Client.findOne({
        loginProfile: login,
      });

      console.log(clientDoc.populate("userProfile").populate("loginProfile");
    }
  }

我可能做错了,但我是自学的,我正在努力。感谢您提供的任何解决方案。如果您有其他实现方法,请分享!谢谢!

GeonDeaux 先生,欢迎来到 Stack Overflow

而不是:

console.log(clientDoc.populate("userProfile").populate("loginProfile"));

您可以在查找时填充文档,这是完整的片段:

const login = await LoginProfile.findOne({ email });
if (login === null) {
  console.log('Account doesn\'t exist.');
} else {
  const validPassword = await bcrypt.compare(password, login.password);
  if (!validPassword) {
    console.log('Email or Password is incorrect');
  } else {
    const clientDoc = await Client.findOne({
      loginProfile: login
    }).populate('userProfile loginProfile');

    console.log(clientDoc);
  }
}