7

Mongoosefindのプロパティを介してネイティブ MongoDB クエリを実行しようとしています。私はコールバックを提供していないので、検索がオブジェクトを返すことを期待していますが、代わりに返されます。Mongoose docsによると、使用されているドライバーは経由でアクセスできます。純粋にネイティブドライバーコードを使用するように切り替えると、何が起こっているのかわかりません。collectionModelCursorundefinedYourModel.collectionfindCursor

問題を再現するコード スニペットを次に示します。

var db = mongoose.connect('localhost', 'test');
var userSchema = new Schema({
    username: String,
    emailAddress: String
});
var User = mongoose.model('user', userSchema);

var cursor = User.collection.find({});
// cursor will be set to undefined

node-inspector を使用してコードにステップ インしようとしましたが、実行できません。私が間違っていることは何か分かりますか?

4

1 に答える 1

11

ネイティブ ドライバー メソッドはすべて、nextTick で実行するようにプロキシされるため、ドライバーからの戻り値は返されません。

代わりに、コールバックを渡すことができ、返される 2 番目の引数はカーソルです。

User.collection.find({}, function (err, cursor) {
  // 
});

なぜマングースをバイパスする必要があるのか​​知りたいですか?

于 2012-05-14T22:18:00.117 に答える