从帆控制器中的方法中排除某些数据的最佳方法
the best way to exclude some data from a method in sails controller
我想在某些控制器方法中排除一些数据,而在其他方法中我想排除一些数据。在发现之后,我用 forEach
函数直接进入方法:
nine: function (req, res) {
Dore.find()
.limit(9)
.sort('createdAt DESC')
.populate('file')
.exec(function (err, sh) {
if (err) {
return res.negotiate(err);
} else {
console.log('before : ', sh);
sh.forEach(function (item, i) {
delete item.zaman;
});
console.log('after : ', sh);
return res.send(sh);
}
});
},
我想知道如何通过 finding 做到这一点并且不包含在 finding 中,所以我们不需要使用 forEach
再次删除它。
坦克
正如@zabware 所说,我们在 Query option
中有 select
方法,我尝试了这种格式,但不起作用,return 所有数据:
我尝试按照以下格式使用它,但不起作用:
Model.find( {
where: {},
limit: 9,
sort: 'createdAt DESC'
},
{
select: [ 'id', 'createdAt' ]
} )
和
Model.find( {
where: {},
limit: 9,
sort: 'createdAt DESC',
select: [ 'id', 'createdAt' ]
} )
和
Model.find( {}, select: [ 'id', 'createdAt' ] )
虽然 toJson 确实是为解决您所面临的问题而设计的,但它对您没有帮助,因为在某些操作中您希望排除某些字段,而在其他操作中则不需要。
所以我们需要 select 每个查询的字段。幸运的是在水线中有一个解决方案:
Dore.find({}, {select: ['foo', 'bar']})
.limit(9)
.sort('createdAt DESC')
.populate('file')
.exec(function (err, sh) {
console.log(err);
console.log(sh);
});
自 sails 0.11 起支持此功能,但未真正记录。您可以在此处 https://github.com/balderdashy/waterline-docs/blob/e7b9ecf2510646b7de69663f709175a186da10d5/queries/query-language.md#query-options
的查询选项下找到它
我在玩调试器时无意中发现了它 - Sails 版本 1.2.3
有类似 omit
的内容,您可以将其放入查找方法调用中:
const user = await User.findOne({
where: {email : inputs.email},
omit: ['password']
}); //There won't be password field in the user object
遗憾的是,文档中没有提及它。
我想在某些控制器方法中排除一些数据,而在其他方法中我想排除一些数据。在发现之后,我用 forEach
函数直接进入方法:
nine: function (req, res) {
Dore.find()
.limit(9)
.sort('createdAt DESC')
.populate('file')
.exec(function (err, sh) {
if (err) {
return res.negotiate(err);
} else {
console.log('before : ', sh);
sh.forEach(function (item, i) {
delete item.zaman;
});
console.log('after : ', sh);
return res.send(sh);
}
});
},
我想知道如何通过 finding 做到这一点并且不包含在 finding 中,所以我们不需要使用 forEach
再次删除它。
坦克
正如@zabware 所说,我们在 Query option
中有 select
方法,我尝试了这种格式,但不起作用,return 所有数据:
我尝试按照以下格式使用它,但不起作用:
Model.find( {
where: {},
limit: 9,
sort: 'createdAt DESC'
},
{
select: [ 'id', 'createdAt' ]
} )
和
Model.find( {
where: {},
limit: 9,
sort: 'createdAt DESC',
select: [ 'id', 'createdAt' ]
} )
和
Model.find( {}, select: [ 'id', 'createdAt' ] )
虽然 toJson 确实是为解决您所面临的问题而设计的,但它对您没有帮助,因为在某些操作中您希望排除某些字段,而在其他操作中则不需要。
所以我们需要 select 每个查询的字段。幸运的是在水线中有一个解决方案:
Dore.find({}, {select: ['foo', 'bar']})
.limit(9)
.sort('createdAt DESC')
.populate('file')
.exec(function (err, sh) {
console.log(err);
console.log(sh);
});
自 sails 0.11 起支持此功能,但未真正记录。您可以在此处 https://github.com/balderdashy/waterline-docs/blob/e7b9ecf2510646b7de69663f709175a186da10d5/queries/query-language.md#query-options
的查询选项下找到它我在玩调试器时无意中发现了它 - Sails 版本 1.2.3
有类似 omit
的内容,您可以将其放入查找方法调用中:
const user = await User.findOne({
where: {email : inputs.email},
omit: ['password']
}); //There won't be password field in the user object
遗憾的是,文档中没有提及它。