2017-02-02 12 views
0

MongoDBの新機能ですので、私は用語が正しいことを願っています。mongooseを使ってコレクションが存在することを確認します

私はユーザコレクションを含むデータベースを持っています。ノードでは、フィールドの値をチェックしたいと思いますが、まずフィールドが存在することを確認する必要があります。例えば

ここでは私のユーザーのスキーマです:

var mongoose = require('mongoose'); 
var userSchema = mongoose.Schema({ 

    local: { 
     email  : String, 
     password  : String, 
    }, 
    facebook   : { 
     id   : String, 
     token  : String, 
     email  : String, 
     name   : String 
    } 
} 

一部のユーザーは、ローカルおよびFacebookの文書/フィールドの両方を持っていますか?他の人はどちらかを持つかもしれない。

文書に両方のフィールドが存在する場合、両方のフィールドに現在のユーザー文書に電子メール値があることを確認したいと思います。私が直接電子メールフィールドにアクセスしようとフィールドがそのドキュメントのために存在しない場合、すなわち

User.local.email & User.facebook.email 

私が取得:

TypeError: Cannot read property 'email' of undefined 

答えて

0

はこれを試してみてください -

var localExists = User.local != null; 
var facebookExists = User.facebook != null; 

if(localExists && facebookExists){ 
    // both exist so check if both have email 
    var bothHaveEmail = User.local.email != null && User.facebook.email != null; 
} 
else if(localExists){ 
    // only local exists 
} 
else if (facebookExists){ 
    // only facebook exists  
} 
else{ 
    // nothing exists 
} 
0

あなたが

を試みることができます
const localEmail = user.local && user.local.email; 
const fbEmail = user.facebook && user.facebook.email; 

いずれかが設定されている場合そのメールフィールドが存在しないことを意味するundefined

関連する問題