我正在尝试在模型上实现一个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”论点是什么/做什么。
答案 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属性。