在feathersjs文档中,提供的解释如下:
pick将丢弃除指定字段之外的所有字段,从提交的数据或结果。如果数据是数组或分页查找结果钩子将删除每个项目
import _pluck from '../common/_pluck';
import checkContextIf from './check-context-if';
import getItems from './get-items';
import replaceItems from './replace-items';
export default function (...fieldNames) {
return context => {
checkContextIf(context, 'before', ['create', 'update', 'patch'], 'pluck');
if(context.params.provider) {
replaceItems(context, _pluck(getItems(context), fieldNames));
}
return context;
};
}
getItems实用程序返回hook.data或hook.result取决于钩子是用作before还是钩后。返回hook.result.data或hook.result进行查找方法
返回的项总是一个数组,以简化进一步的处理。
replaceItems实用程序与getItems相反,返回物品的来源。
我的问题与checkContextIf函数有关。此函数可防止在创建、更新和修补方法之前调用pull-hook。那么,pick-hook是如何处理查询结果的呢。结果不是在服务调用之后产生并在后挂钩中处理的吗?
如文档所述:
getItems实用程序返回hook.data或hook.result中的项,具体取决于钩子是用作before还是after钩子。
hook.data
是与创建、修补或更新请求一起发送的数据(主体),因此可以使用它来省略不希望保存到数据库的字段。这也记录在挂钩API:中
data
-请求数据(用于create
、update
和patch
)