【问题标题】:Meteor rendered and mongodb collectionMeteor 渲染和 mongodb 集合
【发布时间】:2015-07-13 11:43:58
【问题描述】:

我是 Meteor 的新手。我正在尝试显示来自 mongoDB 集合的数据,并希望对其进行迭代以执行一些计算。

如下所述:

Employee = new Mongo.Collection("data");

Template.welcome.rendered = function() {
   var employee = Employee.find({}); 
   employee.forEach(function(emp){ console.log(emp.id); });
}

但是我得到一个空数组。这种情况如何处理?

(我可以把它放在“助手和订阅者部分”,但我需要使用嵌入执行一些 jQuery 操作。但是这个 jQuery 在这个助手函数中不起作用。)

【问题讨论】:

  • 您可能应该等待订阅完成,然后再呈现欢迎模板。 Employee 集合中渲染时可能还没有数据
  • 感谢您的回复。但集合有数据。但是 find() 不适用于渲染。
  • 那么运行 Empoyee.find().fetch() 会在渲染函数中返回数据?

标签: jquery mongodb meteor


【解决方案1】:

首先你应该知道,当你声明 Mongo 集合时,最好在构造函数中使用同名“employee”。

您还应该注意到,在最新版本的 MeteorJS 中,您应该使用 Template.name.onRendered() 而不是 rendered,它适用于向后兼容,但它会被弃用。

还有一件事。不要忘记 id 之前的下划线,如下所示:_id

试试这个代码,看看它是否有效:

Employee = new Mongo.Collection("employee");

Template.welcome.onRendered( function() {
   var employee = Employee.find({}); 
   employee.forEach(function(emp){ console.log(emp._id); });
}

【讨论】:

  • 感谢您的快速回复。但该解决方案不适用于 db fetch。正如您提到的那样,“onRendered()”已被弃用。流星中还有其他方法可以从数据库中获取数据并执行 JQuery 操作吗?
  • 你的意思是它不能与 db fetch 一起工作?您确定将集合发布给客户端吗?
【解决方案2】:

流星文档是这么说的

在客户端,在页面加载和发布的数据从服务器到达之间会有一段时间,在此期间您的客户端集合将为空。

来源:https://docs.meteor.com/api/collections.html#Mongo-Collection-find

【讨论】:

  • 尝试使用流星删除自动发布删除自动发布在服务器端添加发布 Meteor.publish('tasks',function(){ return Tasks.find({}); });并在客户端添加订阅 Template.todos.onRendered(() => { this.state = new ReactiveDict(); Meteor.subscribe('tasks'); const tasksArr = Tasks.find({}).fetch() ; });
【解决方案3】:

尝试使用删除自动发布 meteor remove autopublish.

在服务器端添加发布:

Meteor.publish('tasks',function(){
  return Tasks.find({});
});

并在客户端添加订阅:

Template.todos.onRendered(() => {

    this.state = new ReactiveDict();
    Meteor.subscribe('tasks');
    const tasksArr = Tasks.find({}).fetch();
    
});

如果您使用 Iron Route,请使用

Router.route('/todos', {
    waitOn: function (){
        return Meteor.subscribe('tasks');
    },
    action: function (){
        this.render('todos_calendar');
    }
});

本教程可能会有所帮助:https://www.meteor.com/tutorials/blaze/publish-and-subscribe

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多