Sails.js中的多个关联

Joh*_*mar 4 javascript associations node.js sails.js

我目前正在玩Sails.js beta中的协会(v 0.10.0-rc4).

我正在尝试将多个数据库关联到一个结果中(使用sails-mysql).

该关联看起来像这样Post- > TagRelation- > Tag.而当我查询Post表时,我希望返回的对象包含相关的Tag名称.

模型看起来像这样:

// Post model
var Post = {
    title: 'string',
    body: 'string',
    tag_relations: {
        collection: 'TagRelation'
            via: 'post_id'
    }
};
// Tag Relation model
var TagRelation = {
    post_id: {
        model: 'Post'
    },
    tag_id: {
        model: 'Tag'
    }
};
// Tag model
var Tag = {
    name: 'string',
    tag_relations: {
        collection: 'Tag',
        via: 'tag_id'
    }
};
Run Code Online (Sandbox Code Playgroud)

现在,一旦我去了,http://localhost:1337/post/1我将获得一个带有tag_relations键的JSON对象,其中包含一个TagRelation对象数组,但有没有办法获取Tag他们所指的实际对象列表呢?或者有更好的方法吗?

sgr*_*454 9

Sails为您处理连接表,因此您根本不需要该TagRelation模型:

// Post model
var Post = {
    title: 'string',
    body: 'string',
    tags: {
        collection: 'tag',
        via: 'posts',
        dominant: true // could be on either model, doesn't matter
    }
};

// Tag model
var Tag = {
    name: 'string',
    posts: {
        collection: 'post',
        via: 'tags'
    }
};
Run Code Online (Sandbox Code Playgroud)

这样蓝图/post/1将包含其相关的所有内容tags.有关详细信息,请参阅关联文档 - 已修复已损坏的链接.

dominant:true标签可以让帆知道放哪一个协会侧的连接表,在情况下,两个模型在不同的数据库.当两个模型位于同一个数据库中时,我们正在努力使其成为可选项,但是现在必须明确指定它.