sails的Waterline问题
发布于 8 年前 作者 mikan2000 5415 次浏览 来自 问答

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

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

6 回复

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

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

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

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

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

College.findOne({name: 'usa'}).populate(‘university’)

@feitian124 首先谢谢朋友

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

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

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

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

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

College.find({country_id: '美国的id', publish: true}). populate(‘country’)

@feitian124

恩,但是这样首先要有一套base数据了,需要知道主键是多少,还是不够灵活

回到顶部