簡體   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