我正在使用Sailsjs v1.0.0-36
。我想禁用模型填充。
所以当我向http://my-app/pets
发送GET请求时:
[
{
id: 1,
breed: 'Wolves',
type: 'Direwolf',
name: 'Ghost',
owner: 1, //user id
},
{
id: 2,
breed: 'Wolves',
type: 'Direwolf',
name: 'Summer',
owner: 1, //user id
},
]
当我向http://my-app/users
发送GET请求时:
[
{
id: 1
firstName: 'John',
lastName: 'Snow',
pets: [ //array of pets id
1,
2,
]
}
]
其中User
模型定义为
// myApp/api/models/User.js
// A user may have many pets
module.exports = {
attributes: {
firstName: {
type: 'string'
},
lastName: {
type: 'string'
},
// Add a reference to Pets
pets: {
collection: 'pet',
via: 'owner'
}
}
};
Pet
模型定义为
// myApp/api/models/Pet.js
// A pet may only belong to a single user
module.exports = {
attributes: {
breed: {
type: 'string'
},
type: {
type: 'string'
},
name: {
type: 'string'
},
// Add a reference to User
owner: {
model: 'user'
}
}
};
在Sails v0.12.0
中,您可以通过设置
/config/blueprints.js
中执行此操作
populate = false
但是在Sails v1.0
中已经弃用了这个,在this之后我们可以通过覆盖parseBlueprintOptions
来实现文档,而this是函数的默认实现。
如何覆盖它以达到所需的效果?
答案 0 :(得分:0)
根据这个commit sailjs 1.0开始再次支持这个选项。
答案 1 :(得分:0)
在这里看到一个实现: https://github.com/balderdashy/sails/issues/4130#issuecomment-310720365
parseBlueprintOptions(req) {
var queryOptions = req._sails.hooks.blueprints.parseBlueprintOptions(req);
if(!req.param('populate', false) && !queryOptions.alias) {
queryOptions.populates = {};
}
return queryOptions;
}