V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Meteor Official Site
http://www.meteor.com/
Follow @meteorjs on Twitter
ljbha007
V2EX  ›  Meteor

玩 Meteor 踩过的陨石坑总结

  •  
  •   ljbha007 · Sep 7, 2015 · 7571 views
    This topic created in 3894 days ago, the information mentioned may be changed or developed.

    玩了几天 Meteor 总结一下遇到过的坑
    如果是做教程里的 Todo 应用的确是很容易 但是如果要做复杂一点的应用坑就开始多起来 而且很多都是陨石坑级别的

    1. 文档间关联支持非常差 因为 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/

    1. 被关联的文档更新时不会触发 blaze 模版引擎的重绘 因为 join 上去的文档一般是直接用赋值的方式附加到主文档上的 blaze 读取该值的时候没有触发注册重绘的注册机制 所以当这个文档更新时也就不会触发重绘

    解决办法
    1.用 Template.<my object>.helpers 返回一个关联文档的指针 读取指针的值时会触发 Meteor 的重绘注册机制 所以当被关联的对象对象更新时就触发了重绘 例如

    Template.book.helpers ({
       'author' : function (){
         return Authors.find (this.authorId );
       }
     });
    
    4 replies    2016-01-19 21:09:06 +08:00
    scarlex
        1
    scarlex  
       Sep 7, 2015
    我提一点~
    如果用户在手机中访问 Meteor 的网站,如果网络环境差一点的话, WebSocket 建立不了,然后就不用玩了...
    ljbha007
        2
    ljbha007  
    OP
       Sep 7, 2015
    @scarlex
    哈哈哈哈哈 建立不了还是不至于 只是容易掉线 我用之前也想到了
    wdhwg001
        3
    wdhwg001  
       Sep 8, 2015 via iPhone
    还有我真的嫌它库大,虽然也有混淆之后妈都不认识的优点,但是首次访问对于爪机来说还真是漫长…
    以及如果做游戏向的话,延迟补偿反倒是大坑…
    yy030913
        4
    yy030913  
       Jan 19, 2016
    只可惜没有 ORM 实体关系映射,所有集合都要在 client 中 find 出来
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5737 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 08:36 · PVG 16:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.