meteor实例—5—数据库存取及保持实时

从数据库提取数据

题外话:

首先我们先放点数据在数据库里。我们要做的是让服务器第一次初始启动的时候从一个数据文件中读取数据结构存在Posts 集合中。
首先我们要确保数据库中没有数据。我们使用meteor reset 命令清空数据库初始化我们的项目。当然,如果在真实的正在运行的正式项目上请务必十分小心。
停止 Meteor 服务(通过键入ctrl-c ) 然后在命令行输入:
meteor reset
这个 reset 命令彻底地把 Mongo 数据库清空了。在开发的时候这个命令很有用,尤其当我们的数据库发生数据混乱的时候。
现在重启我们的 Meteor 应用:
meteor

正文开始:

1、在项目根目录下新建文件夹collections,文件夹下新建js文件,命名为posts.js

Posts = new Mongo.Collection('posts');

该代码因为既不位于server下,也不位于client下,所以在客户端和服务端都会被执行。

2、在server文件夹下新建一个js文件,名字比如叫做initdata.js

if (Posts.find().count() === 0) {
Posts.insert({
title: 'Introducing Telescope',
url: 'http://sachagreif.com/introducing-telescope/'
});
Posts.insert({
title: 'Meteor',
url: 'http://meteor.com'
});
Posts.insert({
title: 'The Meteor Book',
url: 'http://themeteorbook.com'
});
}
View Code

这段代码只会在服务端运行,服务器启动时候检查数据库Posts 集合,如果为空则载入三条帖子。

现在我们用meteor 命令启动服务,这三条帖子会被装在到数据库中。

动态数据
现在如果我们打开一个浏览器的控制台,我们可以看到这三个帖子都被转载到 MiniMongo 中了:
❯ Posts.find().fetch();
要把这些 post 渲染到 HTML 中,我们需要用模板 helper。
在第三章中,我们看到 Meteor 允许我们把数据上下文捆绑到我们的 Spacebars 模板上,从而用 HTML 视图
显示这些简单的数据结构。 我们可以同样把我们的集合数据捆绑起来。我们马上就替换掉静态的postsData Ja
vascript 对象成为一个动态地集合。
现在请随手删掉postsData 代码。下面是posts_list.js 修改后的样子:

Template.postsList.helpers({
posts: function() {
return Posts.find();
}
});
View Code

查找与提取
在 Meteor 中, find() 返回值是一个游标。游标是一种从动数据源。如果你想输出内容,你可以对游标使用fetch() 来把游标转换成数组。
Meteor 十分智能地在应用中保持游标状态而避免动不动就把游标变成数组。这就造成了你不会经常在 Meteor代码中看到fetch() 被调用(基于同样原因,我们在上述例子中也没有使用 fetch )。
现在,与其把帖子们变成静态的数组,不如直接把游标赋给posts 帮助方法。

现在,应该可以正确显示了。

我们通过chrome控制台增加另一个帖子:

Posts.insert({
title: 'Meteor Docs',
author: 'Tom Coleman',
url: 'http://docs.meteor.com'
});

会发现页面随之更新,说明从动功能生效了失效了。

原文地址:https://www.cnblogs.com/wonderhow2/p/6345050.html