玩 Meteor 踩过的陨石坑总结 - V2EX
ljbha007
·
2015-09-07
·
via Meteor
这是一个创建于 3933 天前的主题,其中的信息可能已经有所发展或是发生改变。
玩了几天 Meteor 总结一下遇到过的坑
如果是做教程里的 Todo 应用的确是很容易 但是如果要做复杂一点的应用坑就开始多起来 而且很多都是陨石坑级别的
- 文档间关联支持非常差 因为 mongoDB 没有原生的 join 操作 只能靠自己手动二次查询来关联对象,但是
- Meteor.publish 只支持返回数据库指针 不能返回已经查好的数据集(为了使用 mongoDB 的 tailable cursor 实现从数据库到应用层的数据推送)所以如果想要在服务器端直接关联只能自己用底层的 observe 和 observeChanges 的 API 来重写 publish 方法 非常复杂而且相关的文档也不全面
- 如果使用客户端 Join 的办法也会有问题 比如某个 document 中有个字段是数组 数组中有了新的元素进来 遇到这种情况 客户端直接 join 的对象就会收不到消息 因为 没有主动去 subscribe
解决办法: https://github.com/englue/meteor-publish-composite 使用这个包可以解决服务器端的 join 逻辑复杂的问题
关于这方面一些相关的文章: https://www.discovermeteor.com/blog/reactive-joins-in-meteor/
- 被关联的文档更新时不会触发 blaze 模版引擎的重绘 因为 join 上去的文档一般是直接用赋值的方式附加到主文档上的 blaze 读取该值的时候没有触发注册重绘的注册机制 所以当这个文档更新时也就不会触发重绘
解决办法
1.用 Template.<my object>.helpers 返回一个关联文档的指针 读取指针的值时会触发 Meteor 的重绘注册机制 所以当被关联的对象对象更新时就触发了重绘 例如
Template.book.helpers ({
'author' : function (){
return Authors.find (this.authorId );
}
});
 |
|
1
scarlex 2015 年 9 月 7 日
我提一点~ 如果用户在手机中访问 Meteor 的网站,如果网络环境差一点的话, WebSocket 建立不了,然后就不用玩了...
|
 |
|
3
wdhwg001 2015 年 9 月 8 日 via iPhone
还有我真的嫌它库大,虽然也有混淆之后妈都不认识的优点,但是首次访问对于爪机来说还真是漫长… 以及如果做游戏向的话,延迟补偿反倒是大坑…
|
 |
|
4
yy030913 2016 年 1 月 19 日
只可惜没有 ORM 实体关系映射,所有集合都要在 client 中 find 出来
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。