通过协会更新水线

时间:2017-02-20 21:10:40

标签: javascript many-to-many sails.js waterline

我有两个对象AssignmentTags的直通关联。它们通过模型AssignmentTag加入。我能读懂&在这些对象之间写得很好,但是当我尝试更新时,它不会删除see notes for .update()之前的现有关联。

我相信我应该能够将一组Tag ID传递给Assignment模型,并删除当前的关联并更新新的关联。

    Assignment.update({id: req.param("assignmentId")}, {tags: tags})
                .exec(function (err, updated) {
                    if (err) {
                        return res.serverError(err);
                    }

                    return res.json({
                        updated
                    }
                });

Assignment.js模型是:

    module.exports = {
        connection: db_connection,
        tableName: 'assignments',
        attributes: {
            id: {
                type: 'integer',
                primaryKey: true,
                autoIncrement: true,
                unique: true
            },
            title: {
                type: 'string'
            }, // varchar(255)
            description: {
                type: 'text'
            }, // text
            // an assignment may have many tags
            tags: {
                collection: 'tag',
                via: 'assignment',
                through: 'assignmenttag'
            },
        }
    };

Tag.js模型是:

    module.exports = {
        connection: db_connection,
        tableName: 'tags',
        attributes: {
            id: {
                type: 'integer',
                primaryKey: true,
                autoIncrement: true,
                unique: true
            },
            title: {
                type: 'string'
            }, // varchar(255)
            description: {
                type: 'text'
            }, // text
            // A tag may have many assignments
            assignments: {
                collection: 'assignment',
                via: 'tag',
                through: 'assignmenttag'
            },
        }
    };

AssignmentTag.js模型是:

    module.exports = {
        connection: db_conection,
        tableName: 'assignment_tag',
        attributes: {
            id: {
                type: 'integer',
                primaryKey: true,
                autoIncrement: true,
                unique: true
            },
            assignment: {
                columnName: 'assignment_id',
                model: 'assignment'
            },
            tag: {
                columnName: 'tag_id',
                model: 'tag'
            },
        }
    };

知道为什么标签关联没有放在.update()

更新:我在水线项目上创建了一个问题,以获得更多帮助。我已在水线问题上链接的存储库中隔离了该问题。 https://github.com/balderdashy/waterline/issues/1453

决议:水线在大约一周后响应并更新模型关联以适应此请求。请参阅问题:https://github.com/balderdashy/waterline/issues/1453。他们显然是在即将发布的版本中重写这些关联,所以这个问题应该是过时的。

1 个答案:

答案 0 :(得分:0)

这是通过Waterline repo上发布的以下问题解决的:https://github.com/balderdashy/waterline/issues/1453