rlog
V2EX  ›  Node.js

有同学用过 node-orm2 没,求助关于 hasMany 的问题

  •  
  •   rlog · Sep 21, 2014 · 6168 views
    This topic created in 4260 days ago, the information mentioned may be changed or developed.
    我有两个model,Order 和 Service

    Order = db.define('order', {
    id,
    //.... 一些字段
    })

    Service = db.define('service', {
    id,
    //.... 一些字段
    })

    然后我做了一个hasMany , 来表示一个Order可以有多个Service:

    Order.hasMany('service', Service, {
    service_id: 'number',
    order_id: 'number'
    }, {
    autoFetch: true
    });

    我现在 order.setService 没有问题。 可是,order.getService 却返回了order表的第一行内容。

    百思不得其解,求指点,如果我描述的不清楚希望能私聊。

    非常感谢
    11 replies    2014-09-22 11:30:20 +08:00
    loddit
        1
    loddit  
       Sep 21, 2014
    看了下文档 hasMany 貌似是用于 many to many 的,是需要关联表 order_service(s 这里应该加个复数).

    一对多用的是 findByOrder(order)
    rlog
        2
    rlog  
    OP
       Sep 21, 2014
    博公竟然出现了 :D

    嗯,这个order_services 表会自动创建。

    many to many 如果不指定反向的映射关系,其实就是one to many. orm2也只提供了hasOne和hasMany.

    没看见这个findByOrder 呀,你在那里看到的?
    loddit
        3
    loddit  
       Sep 21, 2014
    hasOne 里面,动态生成的
    rlog
        4
    rlog  
    OP
       Sep 21, 2014
    我靠,我一直盯着 hasMany 看。。。多谢博工点拨
    rlog
        5
    rlog  
    OP
       Sep 21, 2014
    @loddit 好像还是不对呀。 haOne不会生成中间表,只会在Service里生成外键order_id. 求面聊。
    Automan
        6
    Automan  
       Sep 21, 2014
    一对多为什么需要中间表
    zieglar
        7
    zieglar  
       Sep 21, 2014
    这个不好用的话试试 waterline XD
    rlog
        8
    rlog  
    OP
       Sep 22, 2014
    @Automan 其实是多对多的,只是暂时用到了一对多的功能。
    rlog
        9
    rlog  
    OP
       Sep 22, 2014
    @zieglar 多谢推荐。选orm2真是个大坑呀,也不支持Promises。项目到尾声了,换orm成本有点大呀。其实之前还想过换sequelize。一开始也没多想,就觉得node-orm名字看起来还挺正统的。
    rlog
        10
    rlog  
    OP
       Sep 22, 2014
    其实最后也没找到问题 @loddit 帮我写了demo测试orm2本身是没问题的。 但我就是找不到我代码里的bug。还是自己手工实现了many to many...
    loddit
        11
    loddit  
       Sep 22, 2014
    自己动手丰衣足食!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3755 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 05:05 · PVG 13:05 · LAX 22:05 · JFK 01:05
    ♥ Do have faith in what you're doing.