繁体   English   中英

在 model 查询后填充 mongoose 文档的问题

[英]Issues populating mongoose document after model query

第一次上SO,所以我希望一切顺利。

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

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

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

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");
    }
  }

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

欢迎来到 Stack Overflow,MrGeonDeaux

代替:

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);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM