2017-10-22 10 views
0

Express에 통합하는 방법에 관한 학교 워크샵을 진행하고 있습니다. 우리는 우리의 hooks 활용 학습 섹션이 모델은-과 내가이 혼란을했다 :Sequelize (되돌아 오는 대 연결)의 후크 이해

후크를 부착 대 반환 저장 되는 페이지의 인스턴스 실행 인수로서 주어진다. 그러므로 urlTitle을 함수에서 반환하는 대신이 페이지 인스턴스에 첨부하고 싶습니다.

var Sequelize = require('sequelize'); 
var db = new Sequelize('postgres://localhost:5432/__wikistack__', { 
    logging: false, 
}); 

const Page = db.define(
    'page', 
    { 
    title: { 
     type: Sequelize.STRING, 
    }, 
    urlTitle: { 
     type: Sequelize.STRING, 
    }, 
    content: { 
     type: Sequelize.TEXT, 
    }, 
    status: { 
     type: Sequelize.ENUM('open', 'closed'), 
    }, 
    }, 
    { 
    hooks: { 
     beforeValidate: function(page) { 
     if (page.title) { 
      // Removes all non-alphanumeric characters from title 
      // And make whitespace underscore 
      return (page.urlTitle = page.title.replace(/\s/g, '_').replace(/\W/g, '')); 
     } else { 
      // Generates random 5 letter string 
      return (urlTitle = Math.random() 
      .toString(36) 
      .substring(2, 7)); 
     } 
     }, 
    }, 
    } 
); 

사람이를 설명 할 수 있습니까? 후크의 함수가 어떻게 반환하지 않을 수 있습니까? 위의 작품, 그래서 후크/함수가 뭔가를 반환합니다.

미리 감사드립니다.

답변

1

후크는 레코드 인스턴스의 특정 수명주기 포인트에서 실행되는 코드입니다. 당신은 순전히 부작용이 될 수 있습니다. 귀하의 경우에는, 당신이해야 할 일은 후크가 전달 된 페이지 객체를 수정하는 것이고 반환은 도움이되지 않거나 다치게하지 않는 것입니다.

그러나 후크의 반환 값은 쓸모가 없습니다. 후크 안에서 비동기적인 작업을해야한다면, 약속을 되풀이해야합니다.