2016-12-21 7 views
0

ExpressでMongooseを使用しています。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

次のコードは、あなたがリクエストボディでname属性とJSONに渡していると仮定すると動作します。

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削除する必要がありました:。。{タイプ:文字列、必要な:真を}、' ... :) – Timo

+0

ニース'userData.name'でチェックしているので、スキーマに' lowercase:true'を追加することも考えています。このようにして、 'userName'と' Username'のような2つのユーザ名はありません。私はこれも説明する答えを編集しました。私が書いたコードのもう一つの問題は、 'req.body.name'が未定義の場合、あなたのアプリがクラッシュすることです。あなたはそれのためのチェックを追加する必要があります。 – mkhanoyan

関連する問題