You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
在Meteor中创建一个新的collection使用:MyCollection = new Mongo.Collection("my-collection");,为了让这个Collection(我叫做集合吧)能在服务器和客户端使用,写在判断客户端还是服务器端的外面。
写好之后修改之前的JS,helper中返回集合的数据:
Tasks=newMongo.Collection("tasks");if(Meteor.isClient){// This code only runs on the clientTemplate.body.helpers({tasks: function(){returnTasks.find({});}});}
Meteor
Meteor应用的文件结构
/server
文件夹中的代码只会在服务端运行/client
文件夹中的代码只会在客户端运行/lib
文件夹中的文件将被优先载入main.*
命名的文件将在其他文件载入后载入/public
文件夹中Blaze模版
定义一个模板
引用一个模板
{{> xx1}}
相互嵌套
条件
遍历
上下文
模板动态数据业务逻辑helpers,有关一些动态数据的判断都写在helpers对象中
局部:仅仅在xxx模板中起作用
全局:任意模板中都可以调用该变量
事件绑定
模板内置了jQuery,也就是说平时我们在前台操作的dom,转在了后台写。
模板的生命周期
MongoDB
meteor中使用的数据库是
MongoDB
。在mongodb中,collection相当于关系型数据库的表,但并不需提前创建,更不需要预先定义字段。
db.collect1.save({username:’mayj’,mail:’[email protected]’})
#向collect1中插入一条记录,collection会在第一次插入记录的时候自动创建。db.collect1.save({username:’name2’,mail:’[email protected]’,age:28})
#插入一条新记录,相对上条记录这次有三个key,类似三个字段。db.collect1.find();
#列出collect1中的所有记录。在Meteor中创建一个新的collection使用:
MyCollection = new Mongo.Collection("my-collection");
,为了让这个Collection(我叫做集合吧)能在服务器和客户端使用,写在判断客户端还是服务器端的外面。写好之后修改之前的JS,
helper
中返回集合的数据:Meteor可以使用的数据库操作API
insecure包
模拟每个客户端对服务器上的数据库拥有完全读/写权限的效果,通常生产环境需要移除这个包
meteor remove insecure
这时如果创建一个清单,会发现多出一个清单又瞬间回到原样了,控制台显示
update failed: Access denied
,这就是延迟补偿:客户端上使用预读和模式模拟技术,使它看起来与数据库的连接是零延迟的。去掉了insecure包,需要修改代码
如果返回
true
,允许客户端执行update
操作,false
时拒绝,也可以使用collection.deny
方法来拒绝客户端修改数据库的请求。只有在客户端试图修改数据时才会触发,而服务器端不受这个限制Meteor.methods
和Meteor.call
的组合来实现客户端修改数据autopublish包
使用autopublish包,Meteor会客户端Minimongo中的内容和服务器端的MongoDB同步(除了users集合部分的内容和索引)通常生产环境也需要移除这个包
meter remove autopublish
这时候客户端和服务器端的数据库就不同步了,假如我们有多个集合,可以选择性地从服务器端发布,然后从客户端订阅
The text was updated successfully, but these errors were encountered: