2016-12-21 70 views
0

我正在使用Mongoose和Express。NodeJS,Mongoose,Express:如果用戶是新的,請檢查數據庫

我想檢查用戶名是否已被佔用。

var isNew = function(req, res, next) { 
    if (User.find({ 'userData.name': { $exists: false } })) { 
    next(); 
    } else { 
    res.redirect('/'); 
    } 
} 

我的架構:

var userSchema = mongoose.Schema({ 
    userData: { 
    name: { type: String, required: true, unique: true }, 
    password: String 
    }, 
    imagePath: { type: String, required: true }, 
    notes: [ String ], 
    contacts: [{ 
    name: String, 
    notes: [ String ] 
    }], 
    locations: [ String ] 
}); 

回答

1

下面的代碼將工作假設你傳遞JSON與請求身體name屬性。

var isNew = function(req, res, next) { 
    User.count({ 'userData.name': req.body.name.toLowerCase() }, 
    function (err, count) { 
     if (err) { 
     return next(err); 
     } else if (count) { 
     return next(); 
     } else { 
     res.redirect('/'); 
     } 
    }); 
} 
+0

它似乎並沒有工作... :( – Timo

+0

謝謝它的作品,我不得不刪除'的ImagePath:{類型:字符串,必需:true}'... :) – Timo

+0

尼斯聽到,也因爲你正在通過'userData.name'進行檢查,我會考慮在模式中添加'lowercase:true'。這樣你就不會有2個用戶名看起來像'userName'和'Username'。我編輯了答案來解釋這一點。我寫的代碼的另一個問題是,如果'req.body.name'未定義,您的應用程序將崩潰。你也應該添加一個支票。 – mkhanoyan

相關問題