从风帆控制器方法中排除某些数据的最佳方法



我想在某些控制器方法中排除一些数据,而在其他方法中我想要这些数据。在发现

后,我使用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方法,我尝试这种格式,但不工作并返回所有数据:

我试着用下面的格式,但不工作:

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确实是为了解决您所面临的问题而设计的,但它不会帮助您,因为在某些操作中您希望排除某些字段,而在其他操作中则不希望。

所以我们需要为每个查询选择字段。幸运的是,在水线中有一个解决方案:

Dore.find({}, {select: ['foo', 'bar']})
    .limit(9)
    .sort('createdAt DESC')
    .populate('file')
    .exec(function (err, sh) {
        console.log(err);
        console.log(sh);
    });

从sail0.11开始支持,但没有真正记录。您可以在这里的查询选项中找到它https://github.com/balderdashy/waterline-docs/blob/e7b9ecf2510646b7de69663f709175a186da10d5/queries/query-language.md#query-options

我在玩调试器时偶然发现了它- Sails版本1.2.3

有像omit这样的东西,你可以把它放在你的find方法调用中:

const user = await User.findOne({
   where: {email : inputs.email},
   omit: ['password']
}); //There won't be password field in the user object

很遗憾的是,文档中没有关于它的文字。

相关内容

  • 没有找到相关文章

最新更新