理解和分析Meteor JS对象(可能是游标对象)

时间:2014-12-25 13:12:22

标签: javascript meteor

在我的Meteor.JS应用程序中,我宣布了一个集合:

WPThemes = new Mongo.Collection('wpthemes');

这个系列有我插入的灯具。 它至少包含64个文档,具有以下结构

{
    productname: 'sample product name',
    name: 'sameple name'
}

然后我发布了一份出版物:

Meteor.publish('wpthemes', function(options){
    check(options, {
        limit: Number
    });

    return WPThemes.find({}, options);
});

在RouteController中,我订阅它并将其分配给'数据'的网页:

WPThemesListController = RouteController.extend({
    template: 'wordpress',
    increment: 66,
    wpthemesLimit: function(){
        return parseInt(this.params.wpthemesLimit) || this.increment;
    },
    findOptions: function(){
        return {limit: this.wpthemesLimit()};
    },
    subscriptions: function(){
        this.themesSub = Meteor.subscribe('wpthemes', this.findOptions());
    },
    themes: function(){

        return WPThemes.find({}, this.findOptions());
    },
    data: function(){
        var hasMore = this.themes().count() === this.wpthemesLimit();

        return{

            themes: this.themes(),
            ready: this.themesSub.ready,
            nextPath: hasMore ? this.nextPath() : null
        }
    }

});

所以现在我在Template.wordpress.rendered = function(){}块内。 我想访问'数据中返回的主题:'以上。 主题被赋予this.themes()返回的值,this.themes()获取返回WPThemes.find({},this.findOptions())返回的值; 据我所知,Collection.find()返回一个游标。

因此,我认为主题是持有游标对象???

当我打印到控制台.data.themes时,通过:console.log(this.data.themes); 我明白了:

[Log] Object (wordpress.js, line 14)
_selectorId: undefined
_transform: null
collection: Object
fields: undefined
limit: 66
matcher: Object
reactive: true
skip: undefined
sorter: null
__proto__: Object

我如何迭代这个游标'对象并在控制台中打印存储在文档中的所有信息? 在这种情况下,我想通过以下方式打印插入此集合的每个名称和产品名称:

WPThemes.insert({

            productname: stringToUse,
            name: studioPressFiles[i]
        });

我已将atlas 64文档插入此Collection。

然而,如果我做console.log(this.data.themes.count());

我得到0 ....为什么?

当假设的项为0时,如何迭代此游标以获取数据? 该网页确认集合中有项目,因为{{#each themes}}有效.....

如何将此光标转换为数组?

非常感谢...

1 个答案:

答案 0 :(得分:0)

http://docs.meteor.com/#/full/fetch

所以基本上你要做的就是console.log(this.data.themes.fetch());