将数组转换为游标

时间:2014-03-25 12:00:50

标签: javascript node.js mongodb

使用.toArray(foo)方法可以轻松地将游标转换为数组:

var cursor = col.find({});
cursor.toArray(function (err, itemsArray) {
   /* do something */
});

但是有可能在游标中转换itemsArray所以我将拥有所有游标函数吗?

var newCursor = foo (itemsArray);
typeof newCursor.toArray === "function" // true

1 个答案:

答案 0 :(得分:1)

嗯,这只是JavaScript,所以为什么不创建自己的迭代器:

var Iterator = function () {
    var items = [];
    var index = 0;

    return {

        "createCursor" : function (listing) {
            items = listing;
        },

        "next" : function () {
            if ( this.hasNext() ) {
                return items[index++];
            } else {
                return null;
            }
         },

         "hasNext" : function () {
             if ( index < items.length ) {
                 return true;
             } else {
                 return false;
             }
         }
     }
}();

那么你就像这样使用数组:

var cursor = new Iterator();
cursor.createCursor( array );

cursor.next();    // returns just the first element of the array

所以只是编写迭代器的一般方法。如果您想要更多功能,那么只需将其他方法添加到原型中。