簡體   English   中英

在保存到Mongoose中之前如何檢查數據庫中是否存在嵌入式文檔

[英]How to check if an embedded document exists in database before saving in Mongoose

我正在使用Express,Mongoose和PassportJS構建基本的身份驗證系統。 我要做的是檢查數據庫,如果輸入的用戶名和密碼已經存在於數據庫中。 這是下面的示例代碼:

//Post: /signup
app.post('/signup', function (req, res) {
  var username = req.body.person.user.username;
  var password = req.body.person.user.password;

  Person.user.find({'username': username}, function (err, user) {
    if (err) {
      console.log(err.name);
    } else {
      console.log('User Found');
    }
  });
});

問題是它返回這種錯誤:

TypeError: Cannot call method 'find' of undefined

有人可以幫我嗎。

正如robertklep指出的那樣,您沒有正確檢查用戶的存在。 另外,由於用戶名很可能是唯一的,因此您可以使用findOne(findOne()返回單個對象,而find()也可能返回單個對象,但會將其包裝在數組中)。

Person.findOne({'username': username}, function (err, user) {
  if (err) {
     console.log(err.name);
     return;
  }
  if (!user)
    console.log('User not Found');
    return;
  }
  console.log('User found');

});

我認為您正在尋找這個:

Person.find({ 'user.username' : username }, ...)

FWIW,如果沒有錯誤地調用回調函數,則並不表示已找到用戶,這僅意味着執行查詢沒有錯誤。 但是user仍然可以為null,這意味着查詢沒有任何匹配結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM