2017-01-11 3 views
1

私はノードjsアプリケーションで作業しており、Diskdbをデータベースとして使用しています。次のようにそれは非常に最初の時間にエラーを与える:DiskDBを使用して初めて非常に誤った入力エラーが発生する

私は、このの解決策を見つけたドキュメントで
undefined:0 

^ 
SyntaxError: Unexpected end of input 

「そうdiskDBは空の配列を返します、それが有効なJSONの配列が含まれていることを確認してください。」どのように私はこのファイルがjson配列を含んでいるかどうかをチェックできますか?

私はどのようにして、[]ファイル内に存在するかを確認することができます

db.loadCollections(['users']); 
var u = db.users.findOne(); 
console.log(u); // [] 

を使用して、コレクションをロードするのですか?

diskdbに複数の条件でレコードが存在するかどうかをテストする方法がもう1つあります。

users.jsonに私がチェックしていた使用

[{"email":"[email protected]","password":"123","status":"1","_id":"e39a62a9c7b94d76892f9c3bdfa22715"}] 

と私のコードが含まれている次のとおりです。

db.loadCollections(['users']); 

var preCheck = db.users.find({"email" : req.body.email,"password" : req.body.password}); 
    if(preCheck !== undefined){ 

     if((preCheck.email == req.body.email) && (preCheck.password == req.body.password)){ 
      //logged in 

      req.session.email = req.body.email; 
      req.session.userId = preCheck._id; 
      req.flash('success','Successful Login'); 
      res.redirect('/option'); 
     } 
     else{ 

      req.flash('error','Email Id or Password is Incorrect'); 
      res.redirect('/login'); 
     } 
    } 

私がログインすることはできません。

ありがとうございます!

+0

'db.users.find'は配列を返します、' findOne'を試してください –

答えて

1

お手伝いします。

+0

いいえ、それは働いていません。でも、ありがとう。 – 981

+0

私は答えを更新しました。それは動作するはずです。それは私の場合に働いています。 –

+0

AND – 981

0

あなたのDBは空であるか、以下のjsonデータを含んでいます。

[{"email":"[email protected]","password":"123","status":"1","_id":"e39a62a9c7b94d76892f9c3bdfa22715"}] 

findOne()は、コレクションのレコードの最初の行のみを表示します。フィルタリングするかどうかは、要件に応じて異なります。データはそのデータを取得するためにそこにpreCheck[0]を使用してJSONの配列になりますとおり

var preCheck = db.users.find({"email" : req.body.email,"password" : req.body.password}); 
if(preCheck.length !== 0){ 
    if((preCheck[0].email == req.body.email) && (preCheck[0].password == req.body.password)){ 

    req.session.email = req.body.email; 
    req.session.userId = preCheck[0]._id; 
    req.flash('success','Successful Login'); 
    res.redirect('/option'); 
    } 
    else{ 
    req.flash('error','Email Id or Password is Incorrect'); 
    res.redirect('/login'); 
    } 
} 
else{ 
req.flash('error','Email Id or Password is Incorrect'); 
res.redirect('/login'); 
} 

を:

は、すでに使用している、あなたのコードでfind()を使用してください。あなたのクエリはANDの状態で動作しています。詳細については、GitHub Linkを確認してください。

注:sqllite3をデータベースとして使用することをお勧めします。これは非同期(ほぼ必須)であり、最も積極的に維持されており、GitHubにはほとんどの星があります。あなたはチュートリアルを得ることができますthis Link.

+0

これは、コレクションに空の配列のデフォルトを作成しますか? – 981

+0

はい、 'db.loadCollections(['users']);を呼び出すと、collection jsonファイルとその中に空の配列が作成されます。 – Deep

関連する問題