1

데이터베이스에 삽입하기 전에 데이터의 유효성을 검사하려고합니다. Feathersjs 방식은 후크를 사용하는 것입니다. 권한 그룹을 삽입하기 전에 사용자 게시물에서 제공하는 데이터의 무결성을 고려해야합니다. 내 솔루션은 사용자가 제공 한 데이터와 관련된 모든 사용 권한을 찾는 것입니다. 리스트의 길이를 비교함으로써 데이터가 옳은지를 증명할 수 있습니다. 후크의 코드는 울부 짖는 소리 게시 : 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 콘솔에서 데이터가 데이터베이스에 삽입하였으나 결과

code execution

를 나타낸다.

feathersjs 훅 내에서 실행 된 약속에서 데이터를 반환하려면 어떻게해야합니까?

답변

2

fnCreateGroup은 아무 것도 반환하지 않습니다. return permissionModel(hook.app).findAll입니다. 또는 노드 8+ async/await을 사용하는 경우 다음을 훨씬 쉽게 수행 할 수 있습니다.

const permissionModel = require('./../../models/user-group.model'); 

module.exports = function (options = {}) { 
    return async function usergroupBefore(hook) { 
    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 
    const plist = await permissionModel(hook.app).findAll({ 
     where: { 
     id: { 
      $in: inIds 
     } 
     } 
    }); 

    if (plist.length !== inIds.length) { 
     throw Error('You must provide the permission List'); 
    } else { 
     hook.data.inIds = inIds; 
    } 

    return hook; 
    }; 
}; 
+0

노드 6을 노드 8 설치로 업데이트했습니다. 감사 –