我正在尝试在模型上实现一个 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/