自定义水线连接表

时间:2016-07-04 05:40:06

标签: node.js sails.js schema waterline

有一个存储所有可用语言的语言模型。 语言:

attributes: {
    language: {
        type: 'string',
        required: true
    },
    combinations: {
        type: 'array'
    }
}

简历模型:

user: {
        model: 'User',
        required: true
    },
    language: {
        model:''
        required: false,
        through: 'resumelanguage'
    }

现在我需要将这两个链接在一起,这样简历可以有一组语言,这个链接应该有另一个属性;说rank

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您希望简历中包含多种语言,则必须在其模型中添加collection属性。

// /models/Resume.js
attributes {

    // Other attributes here

    user: {
        model: 'user',
        required: true
    },
    languages: {
        collection:'language',
        via: 'resume'
    }
};

现在,如果您想要One-to-Many关系,语言模型必须具有model属性

// /models/Language.js
attributes: {
    language: {
        type: 'string',
        required: true
    },
    combinations: {
        type: 'array'
    },
    resume : {
      model: 'resume'
    }
}

如果您想要Many-to-Many关系,语言模型也必须具有collection属性

// /models/Language.js
attributes: {
    language: {
        type: 'string',
        required: true
    },
    combinations: {
        type: 'array'
    },
    resumes : {
      collection: 'resume',
      via: 'languages'
    }
}

- 编辑 -

或者您可以在两个表的“链接”表(例如:LanguageResume)上使用一对多关系。然后,您可以将其他属性添加到“链接”表

// /models/LanguageResume.js
attributes: {
    languages: {
      collection: 'language',
      via: 'resumes'
    },
    resumes : {
      collection: 'resume',
      via: 'languages'
    },

    rank: {
        type: 'integer'
    },

}