Sequelize.js afterFind参数解释

Jim*_*eil 6 hook node.js sequelize.js

我正在尝试在模型上实现一个afterFind钩子,并且无法弄清楚语义是什么.我将使用doc和其他StackOverflow问题作为指导,从试验和错误中将以下内容拉到一起.

我的目标是按摩结果(通过应用get(plain:true))并将转换后的值作为promise的结果传递.例如,我希望/希望它返回一个空结果集:

        hooks: {
            afterFind: function(result, options, fn)
            {
                result = [];
            }
        },
Run Code Online (Sandbox Code Playgroud)

但它只会导致请求挂起.文档说参数是通过引用传递的,不包括返回.其他样本意味着:

        hooks: {
            afterFind: function(result, options, fn)
            {
                result = [];
                return fn(null, result);
            }
        },
Run Code Online (Sandbox Code Playgroud)

它不会挂起,但不会更改我的结果集.更何况,我不知道神奇的"fn"论点是什么/做什么.

小智 10

我遇到了类似的问题.这是因为当你执行findAll时,传递给钩子的参数是一个值数组而不是一个对象.我这样做是一种解决方法 -

hooks: {
        afterFind: function(result) {
            if(result.constructor === Array) {
                var arrayLength = result.length;
                for (var i = 0; i < arrayLength; i++) {
                    result[i].logo = "works";
                }
            } else {
                result.logo = "works";
            }
            return result;
        }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我在找到它后更改了记录的logo属性.