1

Node.js エクスプレス アプリで、ユーザー サインインを設定しているところです。このような独学は初めてです。

私はここにこの機能を持っています、

var db     = require('mongojs').connect('localhost/busapp', ['users']),
    crypto = require('crypto');

exports.new = function(req, res) {

    function User(email, password) {
        this.email = email;
        this.password = password;
    }

    var user = new User(req.body.user.email, req.body.user.password);
    console.log(user.email + user.password);

    db.users.find({'email':user.email}, function(err, userFound) {

        if (err) {
            console.log('We have an error :(');
        } else if (userFound === 'undefined') {
            console.log('We couldn\'t find the user ' + user.email);
            return;
        } else {
            console.log('We have fixed the error, hooorraayyy!! ' + userFound[0].email)
        } 
    });

}

しかし、コンソールログは次のように表示されます

We found the user! undefined

誰かが素晴らしい状況に光を当てることができれば、私が何を間違っているのかわかりません、ありがとう!

コードを上記のように変更して修正しましたが、問題が発生しました。存在しないメールを検索しようとすると、アプリ全体が次のエラーでクラッシュします。

C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\connection\server.js:529
        throw err;
              ^
TypeError: Cannot read property 'email' of undefined
    at C:\Users\Gacnt\Desktop\Busapp\routes\session.js:22:72
    at C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\cursor.js:159:16
    at commandHandler (C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\cursor.js:628
:16)
    at null.<anonymous> (C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\db.js:1709:
18)
    at g (events.js:175:14)
    at EventEmitter.emit (events.js:106:17)
    at Server.Base._callHandler (C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\con
nection\base.js:130:25)
    at C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\connection\server.js:522:20
    at MongoReply.parseBody (C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\respons
es\mongo_reply.js:132:5)
    at null.<anonymous> (C:\Users\Gacnt\Desktop\Busapp\node_modules\mongojs\node_modules\mongodb\lib\mongodb\connection\
server.js:481:22)
PS C:\Users\Gacnt\Desktop\Busapp>
4

1 に答える 1

0

私はmongoのjavascriptドライバーを使ったことはありませんが、クエリ自体の行が間違っているようです。私に関しては、あなたのユーザー オブジェクトは undefined であり、電子メール プロパティがありません。Mongo js ドライバーは、実際にクエリを mongo エンジンに渡す前であっても、このプロパティの値を解決しようとします。これは、存在しないユーザーに対しては失敗するため、例外が発生します。mongo にクエリを実行する前に、ユーザー オブジェクトが正しいかどうかのチェックを追加してみてください。

ところで、あなたのコード スニペットからは、「ユーザーが見つかりました!」というメッセージをどこに出力するのか明確ではありません。未定義 'これを再確認してくださいこれが役立つことを願っています

于 2013-04-06T06:26:37.510 に答える