我想在插入数据库之前验证数据。Feathersjs 的方式是使用钩子。在插入一组权限之前,我必须考虑用户帖子提供的数据的完整性。我的解决方案是找到与用户提供的数据相关的所有权限。通过比较列表的长度,我可以证明数据是否正确。钩子的代码贴在下面:
const permissionModel = require('./../../models/user-group.model');
module.exports = function (options = {}) {
return function usergroupBefore(hook) {
function fnCreateGroup(data, params) {
let inIds = [];
// the code in this block is for populating the inIds array
if (inIds.length === 0) {
throw Error('You must provide the permission List');
}
//now the use of a sequalize promise for searching a list of
// objects associated to the above list
permissionModel(hook.app).findAll({
where: {
id: {
$in: inIds
}
}
}).then(function (plist) {
if (plist.length !== inIds.length) {
throw Error('You must provide the permission List');
} else {
hook.data.inIds = inIds;
return Promise.resolve(hook);
}
}, function (err) {
throw err;
});
}
return fnCreateGroup(hook.data);
};
};
我评论了处理其他参数的一些信息以填充inIds
数组的行。我还对与存储在数组中的信息关联的对象进行了均衡搜索。
块内的这个then
块在后台执行。在 feathersjs 控制台上显示结果
但是,数据已插入数据库。
如何从在 feathersjs 钩子中执行的承诺返回数据?