[英]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.