CNode

sails的Waterline问题

问答
Mmikan2000发布于11 年前最后回复11 年前6 回复6100 浏览0 收藏

我使用的是mysql,有一个国家表一个院校表,一对多的关系

我想要拿到美国的全部院校,用orm的方式能取出来么,研究了半天没搞定,就先用query方法写sql暂时用着了

查看回复

回复 (6)

F
feitian124#1·11 年前

先定义 A one-to-many association , 然后直接 populate 就好了.

参见: http://www.sailsjs.org/documentation/concepts/models-and-orm/associations/one-to-many

M
mikan2000#2·11 年前
引用 feitian124先定义 A one to many association , 然后直接 populate 就好了. 参见: http://www.sailsjs.org/documentation/conc...

@feitian124 是这样做的啊,我先在是College.find().populate('country')

但是我要取美国,这个populate里怎么加条件呀

F
feitian124#3·11 年前

你的意思是找到国家, 及国家所有的院校吧? 下面这样:

College.findOne({name: 'usa'}).populate(‘university’)
M
mikan2000#4·11 年前
引用 feitian124你的意思是找到国家, 及国家所有的院校吧? 下面这样:

@feitian124 首先谢谢朋友

我的college里是不存国家名的,这些存在country中,college有个country_id外键

然后college里还有publish也要筛,大概是这样

College.find({publish: true}). populate('country')

就是两个表有个联查条件,搞不定了

F
feitian124#5·11 年前

不好意思, 我上面写错了. 我想要拿到美国的全部院校, 这样的话你上面的写法是对的,但你要遵循 waterline 的规范, 表中的列名和模型中的属性名对应起来, 建立 association. 然后像下面这么写就可以了

College.find({country_id: '美国的id', publish: true}). populate(‘country’)
参与回复
登录后即可参与回复。登录