【问题标题】:Sails 1.0, How to call customToJSON from an Action2?Sails 1.0,如何从 Action2 调用 customToJSON?
【发布时间】:2017-12-18 12:29:53
【问题描述】:

好吧,我有一个用户模型需要实现 customToJSON 并删除要返回 json 的对象的密码。 当我将“responseType”作为“json”放入“exits”时,一切正常,并且密码从响应中取出。但是, responseType: "json" 将根据发送 responseType 为空的终端中的消息而被弃用,但不会调用 customToJSON。谁能帮我理解这个?

这是型号代码:

[...]

    attributes: {

    name: {
        type: 'string',
        required: true,
    },

    email: {
        type: 'string',
        required: true,
    },

    password: {
        type: 'string',
        minLength: 6,
        required: true,
    },
},

customToJSON: function() {
    return _.omit(this, ['password']); 
},
[...]

这是操作代码:

module.exports = {

friedlyName: 'Users List',

description: 'User list -> all users',

exits: {
    success: {

    }

},

fn: async (inputs, exits) => {

    var users = await User.find();

    return exits.success(users);

}

}

如果您输入“responseType: 'json'”,这就是消息:

json 响应类型将在即将发布的版本中弃用。请改用 ``(标准)(即从 success 退出中删除 responseType。)

【问题讨论】:

    标签: javascript node.js express sails.js


    【解决方案1】:

    我在 api/responses 文件夹中定义了自定义响应。

    所以,例如...为 200 OK 响应创建 api/responses/ok.js

    然后在 action2 控制器方法中将其添加到退出:

    exits: {
        success: {
            description: 'Returns ok response from api/responses/ok.js',
            responseType: 'ok'
        }
    }, ...
    

    我的简单 api/responses/ok.js 示例

    module.exports = function ok(data) {
        return this.res.status(200).json(data);
    };
    

    您可以为您需要的每个状态/退出创建响应,然后很容易维护退出...我有响应:badRequest、serverError、禁止、notFound 和未授权

    【讨论】:

    • 我喜欢这个解决方案。但据我了解,这似乎是一个尚未解决的错误,因为框架应该本机提供这个。你可以在trello.com/c/5SkpUlhI/402-make-customtojson-work-with-actions2 看到这个,它代表了sails js 官方团队的trello -> v1
    • 是的,你是对的......但是,我仍然更喜欢这个......代码更易于维护:)
    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2018-05-04
    • 2018-09-19
    相关资源
    最近更新 更多