Meteor开发平台入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

数据集合 - Collection

在很多应用中,后端都需要使用一个数据库来持久化数据,比如MySQL、MongoDB等。 Meteor使用MongoDB实现数据的持久化,不过有趣的是,Meteor淡化了数据库系统的 存在,它将MongoDB深深的封装起来,仅仅暴露了一个API接口:Mongo.Collection

事实上,Meteor希望开发者忘记数据库的存在,它将数据持久化定义为一种服务, 开发者不需要关心数据表的维护,不需要管理数据库的启动、停止等,只需要使用 就可以了:

//创建
var msgs = new Mongo.Collection("messages");
//CRUD
msgs.insert(...);
msgs.update(...);
msgs.remove(...);
msgs.find(...);

有趣的是,Meteor在前端和后端定义了相同的Collection接口对象,这意味着你 仅仅使用一行代码就可以同时在前端和后端定义一对同名数据集

≡ 同名的前端/后端数据集 —— 自动同步

Meteor这么做是有意义的,默认情况下,在前端和后端的同名数据集自动保持同步! 在前端插入的数据,会通过Meteor的RPC机制插入到后端数据集,而后端数据的变化, 将通过pub/sub机制自动传播到前端:

collection

≡ 手动初始化pub/sub机制

需要提醒的是,如果在应用配置中移除了对autopublish包的依赖,那么前端的CRUD操作 还会进入后端,但后端的变化不会将推送给前端。这时需要手工建立pub/sub机制:

//前后端创建同名Collection对象
var msgs = new Mongo.Collection("messages");
if(Meteor.isServer){
  //后端发布
  Meteor.publish("ezpub",function(){
    return msgs.find();
  })
}
if(Meteor.isClient){
  //前端订阅
  Meteor.subscribe("ezpub");
}