使用Through关联Sails.js / waterline创建新实例

时间:2017-05-24 15:27:50

标签: sails.js waterline

在我的模型中,UserProgramProgramStaff之间存在多对多关联:

user.js的:

module.exports = {
    attributes: {
        username: {
            type: 'string',
            required: true,
            unique: true
        },
        programs: {
            collection: 'Program',
            via: 'program',
            through: 'programstaff'
        }
    }
}

Program.js:

module.exports = {
    attributes: {
        name: {
            type: 'string'
        },
        personnel:{
            collection : 'User',
            via: 'user',
            through: 'programstaff'
        }
    }
}

ProgramStaff.js:

module.exports = {
    attributes: {
        program: {
            model: 'Program'
        },
        user: {
            model: 'User'
        },
        permissions: {
            type: 'integer'
        }
    },
    tableName: 'program_staff'
};

(我需要编程人员通过表来保存某种权限和基于用户程序,否则,我只是使用常规的多对多关联。)

我的问题是 - 我可以使用其余或快捷方式路线创建新的User' and associate with (existing)程序吗?

我试图发送

user.programs = [programId];  // doesn't do anything (or error)
//or
user.programs = [{program: progamId}]; // creates new program even though I send valid id of existing program
//or
user.programs = [{program: { id: progamId}}]; // error

但似乎都没有创建ProgramStaff记录。

P.S。我知道我可以通过路由中的User.create和嵌套ProgramStaff.create调用,或创建然后更新休息/快捷方式调用,但我想知道"自动"这样做的方法。

0 个答案:

没有答案