V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rlog
V2EX  ›  Node.js

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

  •  
  •   rlog · 2014-09-21 00:11:35 +08:00 · 5126 次点击
    这是一个创建于 3499 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有两个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 条回复    2014-09-22 11:30:20 +08:00
    loddit
        1
    loddit  
       2014-09-21 03:47:01 +08:00
    看了下文档 hasMany 貌似是用于 many to many 的,是需要关联表 order_service(s 这里应该加个复数).

    一对多用的是 findByOrder(order)
    rlog
        2
    rlog  
    OP
       2014-09-21 09:07:40 +08:00
    博公竟然出现了 :D

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

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

    没看见这个findByOrder 呀,你在那里看到的?
    loddit
        3
    loddit  
       2014-09-21 09:57:25 +08:00
    hasOne 里面,动态生成的
    rlog
        4
    rlog  
    OP
       2014-09-21 10:07:11 +08:00
    我靠,我一直盯着 hasMany 看。。。多谢博工点拨
    rlog
        5
    rlog  
    OP
       2014-09-21 10:16:49 +08:00
    @loddit 好像还是不对呀。 haOne不会生成中间表,只会在Service里生成外键order_id. 求面聊。
    Automan
        6
    Automan  
       2014-09-21 12:44:34 +08:00
    一对多为什么需要中间表
    zieglar
        7
    zieglar  
       2014-09-21 15:22:18 +08:00
    这个不好用的话试试 waterline XD
    rlog
        8
    rlog  
    OP
       2014-09-22 10:53:00 +08:00
    @Automan 其实是多对多的,只是暂时用到了一对多的功能。
    rlog
        9
    rlog  
    OP
       2014-09-22 11:03:04 +08:00
    @zieglar 多谢推荐。选orm2真是个大坑呀,也不支持Promises。项目到尾声了,换orm成本有点大呀。其实之前还想过换sequelize。一开始也没多想,就觉得node-orm名字看起来还挺正统的。
    rlog
        10
    rlog  
    OP
       2014-09-22 11:05:13 +08:00
    其实最后也没找到问题 @loddit 帮我写了demo测试orm2本身是没问题的。 但我就是找不到我代码里的bug。还是自己手工实现了many to many...
    loddit
        11
    loddit  
       2014-09-22 11:30:20 +08:00
    自己动手丰衣足食!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2800 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:14 · PVG 10:14 · LAX 19:14 · JFK 22:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.