Sails.js协会 [英] Sails.js associations

查看:184
本文介绍了Sails.js协会的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始与sails.js,我完全与我的SQL查询丢失。

I am beginning with sails.js and I am completely lost with my sql queries.

我有以下表格:

genres
+-----------+--------------+------+-----+
| Field     | Type         | Null | Key |
+-----------+--------------+------+-----+
| id        | int(6)       | NO   | PRI | 
| name      | varchar(100) | NO   |     | 
| slug      | varchar(255) | NO   |     |
| type      | varchar(32)  | NO   |     | 
| parent_id | int(11)      | YES  | MUL | 
+-----------+--------------+------+-----+
genres_radios
+----------+--------+------+-----+
| Field    | Type   | Null | Key |
+----------+--------+------+-----+
| genre_id | int(6) | NO   | MUL |
| radio_id | int(6) | NO   | MUL |
+----------+--------+------+-----+
radios
+-----------+--------------+------+-----+
| Field     | Type         | Null | Key |
+-----------+--------------+------+-----+
| id        | int(5)       | NO   | PRI | 
| name      | varchar(100) | NO   |     | 
| slug      | varchar(100) | NO   |     |
| url       | varchar(100) | NO   |     | 
+-----------+--------------+------+-----+

我要检索的收音机及其相关流派。我设法做到这一点使用Model.query(SELECT * FROM ...),但我想用填充的方法来做到这一点。我一看文档,但我有点困惑与内经,穿越,...

I want to retrieve the radios and their associated genres. I managed to do it using the Model.query("Select * FROM ...") but I'd like to do it using the populate method. I had a look at the docs, but I am a bit confused with the "via", "through", ...

推荐答案

这应该这样做:

// api/models/Genres.js
module.exports = {
    attributes : {
        name : {
            type: 'string'
        },
        slug : {
            type: 'string'
        },
        type : {
            type: 'string'
        },
        radios : {
            collection: 'Radios',
            through: 'genres_radios'
        }
     }
}

// api/models/Radios.js
module.exports = {
    attributes : {
        name : {
            type: 'string'
        },
        slug : {
            type: 'string'
        },
        url : {
            type: 'string'
        },
        genres : {
            collection: 'genre',
            through: 'genres_radios'
        }
    }
}

// api/models/Genres_radios.js
module.exports = {
    attributes = {
        'Genre_id': {
            columnName:'genre_id',
            type:'integer',
            foreignKey:'true',
            references:'genres',
            on:'id',
            via:'genres'
        },
        'Radio_id': {
            columnName:'radio_id',
            type:'integer',
            foreignKey:'true',
            references:'radios',
            on:'id',
            via:'radios'
        }
    }
}

然后你就可以提出以下要求:

And then you can make the following request :

Radio.findOne({name:"RadioName"}).populate("genres").then(function(radio){
    console.log(radio); 
})

这篇关于Sails.js协会的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆