0

mongo はまったく初めてで、例を何時間もチェックしてきました。このコレクションにユーザーが存在するかどうかを確認しようとしています:

{ "name" : "chrispy", "pass" : "xxxx", "_id" : ObjectId("5221b29b69f9e9b11a000001") }

しかし、名前を一致させて結果を得ることができません。私は数多くの例を試しましたが、うまくいきませんでした。

コンソールでうまく動作します:

mongo main
> db.users.findOne({name : 'chrispy'})
{
        "name" : "chrispy",
        "pass" : "xxxx",
        "_id" : ObjectId("5221b29b69f9e9b11a000001")
}
>

名前が一致したら、パスワードを一致させます。しかし、ユーザー名と一致することさえできません。ヘルプ = 1000 ありがとう!

var name = 'chrispy';
var pass = '';

console.log("About to check for name and pw");

Mongo.connect('mongodb://127.0.0.1:27017/main', function(err, db) {
    if(err) throw err;
    var collection = db.collection('users');

    // does user exist
    var doc = collection.findOne({name : name}, function(err,doc){
        if(err) throw err;
        if(doc)
            console.log("1 Found: "+name+", pass="+doc.pass);
        else
            console.log("1 Not found: "+name);

    });
    if(doc)
            console.log("2 Found: "+name+", pass="+doc.pass);
        else
            console.log("2 Not found: "+name);
    db.close();
});

コンソール出力:

About to check for name and pw
2 Not found: chrispy

とにかく失敗するfindOn()関数の外部で、findOne()関数に入っていないようです。

4

2 に答える 2

0

したがって、動作を開始する前の変更、 var Doc = を削除し、 findOne() 内の関数が起動された後にのみデータベースを閉じました。

var name = 'chrispy';
var pass = '';

console.log("About to check for name and pw");
Mongo.connect('mongodb://127.0.0.1:27017/main', function(err, db) {
if(err) throw err;
var collection = db.collection('users');

// does user exist
collection.findOne({name : name}, function(err,doc){
    if(err) throw err;
    if(doc)
        console.log("Found: "+name+", pass="+doc.pass);
    else
        console.log("Not found: "+name);
    db.close();
});

});

于 2013-09-01T03:38:20.827 に答える