Sequelize.js afterFind参数解释

时间:2015-10-30 20:01:06

标签: node.js hook sequelize.js

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:9)

我有类似的问题。这是因为当你执行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;
        }
}

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