Meteor:迭代MongoCollection.find()中的游标并打印一个字段

时间:2016-07-28 00:13:45

标签: javascript mongodb meteor handlebars.js

我无法打印从流星集中获取的内容。我在/ui/api/collections.js

中声明了我的收藏
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import 'meteor/aldeed:collection2';

export const Courses = new Mongo.Collection("courses");

Courses.allow({
    'insert': function () {
       // if (Meteor.isEducator(Meteor.userId())) {
            return true;
    }
})

/imports/api/course.html

<template name="course">
    <h2> You are enrolled in the following courses:</h2>
    <ul>
        {{#each course_list}}
            {{> getCourseName}}
        {{/each}}
    </ul>
</template>

<template name="getCourseName">
    <li><h2>{{courseName}}</h2></li>
</template>

/imports/api/course.js

Template.course.helpers({
    course_list: function() {
        var result =  Courses.find({});
        console.log("result is:");
        console.log(result);

        return result;
    }
})

我已将Courses声明为新的Mongo.Collection并将其导入/server/main.js然后我将/imports/api/collections.js导入course.js和course.html。

the console output of printing course_list's result is :
L…n.Cursor {collection: LocalCollection, sorter: null, matcher: M…o.Matcher, _selectorId: undefined, skip: undefined…}

我注意到它说LocalCollection让我觉得它没有找到实际的集合。当我在服务器端mongo控制台上执行db.courses.find()时,我看到集合中存在的两个课程,它们都有一个courseName字段。我不认为我需要发布/订阅,因为我在导入中声明了集合,然后将集合导出为全局变量。我是meteor和javascript的新手,所以任何解释都非常感激。

1 个答案:

答案 0 :(得分:1)

不用担心。您已经可以访问数据了。只是Meteor在客户端创建Control.ClientID - Minimongo的力量。这就是您在控制台上看到LocalCollection而不是Courses的原因,这可能是您期望的。

请注意,集合上的find会返回local collections。需要使用 fetch forEach map 等操作来操作实际数据。