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

2014-09-21 00:11:35 +08:00
 rlog
我有两个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表的第一行内容。

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

非常感谢
5344 次点击
所在节点    Node.js
11 条回复
loddit
2014-09-21 03:47:01 +08:00
看了下文档 hasMany 貌似是用于 many to many 的,是需要关联表 order_service(s 这里应该加个复数).

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

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

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

没看见这个findByOrder 呀,你在那里看到的?
loddit
2014-09-21 09:57:25 +08:00
hasOne 里面,动态生成的
rlog
2014-09-21 10:07:11 +08:00
我靠,我一直盯着 hasMany 看。。。多谢博工点拨
rlog
2014-09-21 10:16:49 +08:00
@loddit 好像还是不对呀。 haOne不会生成中间表,只会在Service里生成外键order_id. 求面聊。
Automan
2014-09-21 12:44:34 +08:00
一对多为什么需要中间表
zieglar
2014-09-21 15:22:18 +08:00
这个不好用的话试试 waterline XD
rlog
2014-09-22 10:53:00 +08:00
@Automan 其实是多对多的,只是暂时用到了一对多的功能。
rlog
2014-09-22 11:03:04 +08:00
@zieglar 多谢推荐。选orm2真是个大坑呀,也不支持Promises。项目到尾声了,换orm成本有点大呀。其实之前还想过换sequelize。一开始也没多想,就觉得node-orm名字看起来还挺正统的。
rlog
2014-09-22 11:05:13 +08:00
其实最后也没找到问题 @loddit 帮我写了demo测试orm2本身是没问题的。 但我就是找不到我代码里的bug。还是自己手工实现了many to many...
loddit
2014-09-22 11:30:20 +08:00
自己动手丰衣足食!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/134734

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX