2

コンソールから小さなコードを使用して、MongoDB データベースへのエントリの保存/取得をテストします。次のようになります。

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
});

実行した後、エントリを保存するときに名前が表示され、コンソールに返されず、それ以上メッセージが表示されません。コンソールに戻すにはどうすればよいですか?

4

2 に答える 2

4

データベース接続がまだ開いている限り、node.js プログラムは終了しません。

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
    mongoose.disconnect();
});
于 2013-02-07T13:28:50.990 に答える
0

save()の呼び出しが終了するとコンソールに戻りますが、それはコールバックが呼び出される前です。保存操作に数分かかった場合は、その間コンソールでのプレイを続けることができます。

保存操作が終了すると、コールバックが呼び出され、john.nameがコンソールに出力されます。REPLでのコンソールへの印刷は、入力している場所に書き込まれるため、多少注意が必要です。

だから私の推測では、プロンプトが表示されないためにすべてがブロックされていると思います、実際にはそこにあり、console.logがその行に書き込んだだけです。他のコマンドを試しても、機能するはずです。

于 2013-02-07T10:10:01.863 に答える