Rest 为什么Sails v.0.10.x会以一对多关联响应POST-to嵌套路由?

Rest 为什么Sails v.0.10.x会以一对多关联响应POST-to嵌套路由?,rest,sails.js,sails-mongo,Rest,Sails.js,Sails Mongo,在我的应用程序中,我有两个型号Person和Room。我还有两个控制器,PersonController和RoomController。我没有添加任何自定义路由,也没有覆盖任何样板控制器操作 例如,当我将发布到/room/5/person时,将创建一个person记录,并按预期与room/5关联-很好。但是,在对这个POST的响应中返回的JSON包含房间和所有与房间相关联的人,侧面加载在一个数组中。我希望Sails只返回创建的人(或者最多返回新创建的人和房间,如果blueprints.popul

在我的应用程序中,我有两个型号
Person
Room
。我还有两个控制器,
PersonController
RoomController
。我没有添加任何自定义路由,也没有覆盖任何样板控制器操作

例如,当我
发布到
/room/5/person
时,将创建一个person记录,并按预期与
room/5
关联-很好。但是,在对这个
POST
的响应中返回的JSON包含房间和所有与房间相关联的人,侧面加载在一个数组中。我希望Sails只返回创建的人(或者最多返回新创建的人和房间,如果
blueprints.populate:true

我需要对所做的哪些更改,以便Sails只返回由于
POST
而创建的人员

以下是我当前的代码:

/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 = {

};
module.exports = {

};
/api/controllers/PersonController.js

module.exports = {

};
module.exports = {

};
/config/routes.js

module.exports.routes = {

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

这是故意的;您正在使用“将人员添加到房间”蓝图,因此假设您关心房间的状态。如果您只想返回人员,请使用“创建人员”蓝图,并在有效负载中提供房间ID:

职位/人员

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

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

您看过蓝图的代码了吗?如果无法进行配置,那么编写自己的蓝图可能是值得的。谢谢@Xinzz的有用评论。我会研究这个选择。同时,我将根据sgress454的回答重构我的请求。感谢您@sgress454的回答。我将切换到这种方法,因为它显然是“航行方式”。但是,如果我确实希望更改语义,使
POST/room/5/person
返回创建的人而不是房间,您是否建议覆盖
add.js
blueprint?如果要更改所有模型的行为,覆盖blueprint是一个很好的解决方案。如果您只想将其更改为
Room
,您可以将
add
方法添加到您的RoomController.js中。