2017-11-04 9 views
0

私はnodejsとmongodbを初めて使用しています。以下では、ユーザー名とパスワードに基づいて特定のアカウントを検索しようとしています。 trueの場合、その詳細は、( '/ main')ルートにリダイレクトされます。ルートには何も問題はありません。私はproject1が私のコレクションの名前であるmlabsを使用しています。私は検索クエリですべてが間違っていると思うが、私は何を理解することはできません。検索クエリの誤解

Schema :- 
{ 
    "_id": "id", 
    "UserName": "UserName", 
    "Password": "Password" 
} 

app.js

MongoClient.connect(url , function(err,db){ 
    if (err) return; 

     app.post('/login' , urlencoder , function(req,res){  
      var user = { 
       UserName : req.body.UserName , 
       Password : req.body.Password 
      }; 
      db.collection('project1').find({user}).forEach(function(pes){ 
        if(true) 
        { 
         console.log(pes); 
        } 
        else 
        { 
         res.redirect('/main'); 
        } 
      }); 
     }); 
}); 
+0

' .find(利用者)を通過しなければならない、ネストされたユーザフィールド{ユーザ}を渡してはなりません。それはすでにオブジェクトです。あなたは '.find({" user ":user})'を作っています。これはちょうどひどく間違っています。 [プロパティ定義](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Property_definitions)を読み、構文が実際に何をしているかを理解してください。 –

+0

'project1'スキーマを投稿することができます – Ayoub

+0

' if(true) 'は常にtrueで、/ mainにリダイレクトされません。 – TGrif

答えて

1

問題のカップルが

  1. あなたのロジックであり、あなたが実際のようなサーバーの何かを開始する前にMongoDBへの接続を試してみてくださいこの

    let globalDb; 
    MongoClient.connect(url,function(err,db){ 
        if(!err) { 
         globalDb = db; 
         app.listen(3000,() => { 
         console.log('Server listening on port 3000'); 
         }); 
        } 
    }) 
    
  2. あなたの検索クエリではなく、それは `

    app.post('/login' , urlencoder , function(req,res){  
        var user = { 
         UserName : req.body.UserName , 
         Password : req.body.Password 
        }; 
    
        globalDb.collection('project1').find(user)(function(err,data){      
         if(data) { 
           // user exist 
           // do something 
         } 
        }); 
    });