Node.js Sequelize.js afterFind参数解释

Node.js Sequelize.js afterFind参数解释,node.js,hook,sequelize.js,Node.js,Hook,Sequelize.js,我试图在一个模型上实现一个afterFind钩子,但我不太明白它的语义是什么。我将以文档和其他StackOverflow问题为指导,从反复试验中总结出以下内容 我的目标是按摩结果(通过应用get(plain:true))并将转换后的值作为承诺的结果传递。例如,我希望它返回一个空的结果集: hooks: { afterFind: function(result, options, fn) { resul

我试图在一个模型上实现一个afterFind钩子,但我不太明白它的语义是什么。我将以文档和其他StackOverflow问题为指导,从反复试验中总结出以下内容

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

        hooks: {
            afterFind: function(result, options, fn)
            {
                result = [];
            }
        },
但这只会导致请求挂起。文档说明这些参数是通过引用传递的,不包含返回值。其他样本暗示如下:

        hooks: {
            afterFind: function(result, options, fn)
            {
                result = [];
                return fn(null, result);
            }
        },

这不会挂起,但不会改变我的结果集。更不用说,我不知道神奇的“fn”论点是什么。

我也有类似的问题。这是因为在执行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;
        }
}
挂钩:{
后发现:功能(结果){
if(result.constructor==数组){
var arrayLength=结果长度;
对于(变量i=0;i

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

也许可以查看一些单元测试是如何工作的?当在查询其他模型时包括应用了钩子的模型时,如何使其工作?