2

node.js の mongodb クライアントをラップするクラスがあります。findUsers私が呼び出したときの以下のクラスthis.collectionは未定義です。

this.collectionプロトタイプからアクセスするにはどうすればよいですか?

ありがとうございました!

クラス:

var Users;

Users = (function () {

    function Users(db) {

        db.collection('users', function (err, collection) {
           this.collection = collection;
        });
    }

    Users.prototype.findUsers = function (callback) {

        this.collection.find({}, function (err, results) {

        });
    }

    return Users;

})();

使用法:

//db holds the db object already created
var user = new Users(db);
user.findUsers();
4

2 に答える 2

3

プロトタイプ メソッドで正しく実行しています。エラーは のコールバック関数にありdb.collection()ます。

var Users = (function () {
    function Users(db) {
        var that = this; // create a reference to "this" object
        db.collection('users', function (err, collection) {
            that.collection = collection; // and use that
        });
    }
    Users.prototype.findUsers = function (callback) {
        this.collection.find({}, function (err, results) {

        });
    }
    return Users;
})();
于 2012-04-25T18:43:11.663 に答える
-1

別の参照を使用します。

Users = (function(){
    var that = this;

    function users(db)
    {
         db.collection('users', function(err, collection)
         {
              that.collection = collection;
         }
    }
})();
于 2012-04-25T18:31:41.583 に答える