为什么Sails v.0.10.x通过一对多关联响应POST到嵌套路由?

时间:2014-08-12 03:32:41

标签: rest sails.js sails-mongo

在我的应用中,我有两个型号PersonRoom。我还有两个控制器,PersonControllerRoomController。我没有添加自定义路由,并且我没有覆盖任何样板控制器操作。

当我POST,例如,/room/5/person时,会创建人员记录并按预期与room/5相关联 - 很棒。但是,在对此POST的响应中返回的JSON包含Room和与该房间相关联的所有人员,并在数组中侧载。我希望Sails只返回创建的人(或者,最多只返回新创建的人和房间,如果blueprints.populate: true)。

我需要进行哪些更改才能使Sails仅返回由POST创建的Person?

这是我目前的代码:

/api/models/Room.js

// Room.js

module.exports = {

    autosubscribe: ['update', 'add:people'],
    attributes: {
        name: 'string',

        // Has-many association
        // A room can have many people
        people: {
            collection: 'person',
            via: 'room'
        }
    }
};

/api/models/Person.js

module.exports = {

    autosubscribe: ['update'],
    attributes: {
        name: 'string',

        // Belongs-to association
        // A person can belong to only one room
        room: {
            model: 'room'
        }
    }
};

/api/controllers/RoomController.js

module.exports = {

};

/api/controllers/PersonController.js

module.exports = {

};

/config/routes.js

module.exports.routes = {

    '/': {
        view: 'homepage'
    }
};

1 个答案:

答案 0 :(得分:1)

这是设计上的;你正在使用“添加人到房间”的蓝图,所以假设你关心房间的状态。如果您只是想要退回的人,请使用“创建人”蓝图,并在有效负载中提供房间ID:

发布/人

{
    name: "John Doe",
    room: 5
}

这仍然会发送有关被添加到5号房间的人的pubsub通知。