node.js - Sequelize.js afterFind 参数说明

标签 node.js hook sequelize.js

我正在尝试在模型上实现一个 afterFind Hook ,但不太清楚语义是什么。我将使用文档和其他 StackOverflow 问题作为指南,从反复试验中总结出以下内容。

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

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

但这只会导致请求挂起。文档说参数是通过引用传递的,不包括返回值。其他示例暗示类似:

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

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

最佳答案

我遇到了类似的问题。这是因为当您执行 findAll 时,传递给 Hook 的参数是值数组而不是单个对象。我这样做是为了解决问题 -

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 属性。

关于node.js - Sequelize.js afterFind 参数说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33444015/

相关文章:

node.js - @azure/msal Node : Is there a way to log out/invalidate tokens?

node.js - Node 组/用户管理框架

node.js - Sequelize 路由器不起作用。当我访问页面时,我得到 "Cannot GET/"

node.js - 如何使用 Sequelize 创建关联实体?

javascript - Node crypto.createDecipher 错误的最终 block 长度错误

node.js - 为什么 "npm run lint"指向父文件夹中的 .eslintrc 不是当前文件夹?

javascript - React Native - 如何在另一个函数中使用 'useState()'

java - java中是否提供了任何钩子(Hook)来注册具有垃圾收集的线程?

windows - 如何在Windows平台上编写Git Server Hooks?

node.js - use_env_variable 在 sequelize 中返回 undefined