Meteor集合find()不会检索任何数据

时间:2015-07-09 17:43:01

标签: javascript mongodb meteor

我正在完成一个流星教程:https://www.meteor.com/tutorials/blaze/collections

我定义了一个集合,

Tasks = new Mongo.Collection("tasks");

我添加了两个项目,一个直接来自meteor mongo命令行,另一个使用:

Tasks.insert({ text: "Testing JS", createdAt: new Date() });

以下是在后端运行db.tasks.find()的结果:

{ "_id" : ObjectId("559e9569abbb64fe1d5fd89a"), "text" : "Hello world!", "createdAt" : ISODate("2015-07-09T15:38:17.742Z") }
{ "_id" : "obRN8Rcssa9yJqXzA", "text" : "Testing JS", "createdAt" : ISODate("2015-07-09T17:00:13.285Z") }

但是当我运行Tasks.find({})时;在前端,我得到空的结果。它只给了我一个很长的JSON,但没有来自数据库的数据。

3 个答案:

答案 0 :(得分:3)

在meteor中,您可以通过调用游标上的fetch来查看游标返回的文档。例如:

console.log(Tasks.find().fetch());

答案 1 :(得分:2)

查看您的代码,您不会发布任何内容:

if (Meteor.isServer) {
  Meteor.publish("tasks", function () {
    console.log(Tasks.find());
  });   
}

需要

if (Meteor.isServer) {
  Meteor.publish("tasks", function () {
    console.log(Tasks.find());
    return Tasks.find();
  });   
}

或者只是在使用自动发布时将其删除。

答案 2 :(得分:0)

您是否在前端.js中导入了集合的.js文件?

import { Tasks } from '/your_path_goes_here/filename_goes_here.js';

如果不导入它并在下面尝试,

  1. 添加发布内容

    if (Meteor.isServer) { Meteor.publish('tasks', function task() { return Task.find({}); }); }

  2. 在Front-End .js中订阅

    Meteor.subscribe('task');