mssql 데이터베이스를 사용하는 nodejs 응용 프로그램부터 시작했습니다. 암호화/암호 해독 목적으로, 나는 데이터베이스에 저장된 키를 암호화 했으므로 암호를 해독 할 때마다 먼저이 값을 얻기 위해 데이터베이스에서 호출해야하고, 데이터베이스 호출의 콜백에서 해독 한 다음 해독의 다른 콜백에서 해독해야합니다. function이 값을 사용하여 암호화 기능에 전달합니다.Nodejs - 응용 프로그램에서 데이터베이스에서 값을 가져 와서 나중에 사용할 수 있습니다.
sql.query("query to get key", [parameters],
function (data) {
if (data && (data.length == 1)) {
Decrypt(data[0].Key, iv, salt, function (data) {
var decryptedKey = data;
Encrypt(inputData, decryptedKey, function (data){
var encryptedData = data;
내가 원하는 실제로 시작 응용 프로그램에 대한 데이터베이스에서 그걸 얻기 위해 어디서나 사용할 수 변수에 어딘가에 (decryptedKey)을 저장할 다른 장소에 논리를 이동 "데이터베이스에서 키를 얻고 그것을 해독"하는 것입니다 :
그래서sql.query("query to get key", [parameters],
function (data) {
if (data && (data.length == 1)) {
AESDecrypt(data[0].Key, iv, salt, function (data) {
var decryptedKey = data;
, 워크 플로우는해야한다 :
- 시작은 데이터베이스에이 비동기 호출을 응용 프로그램에게
- 을 nodejs ,이 키를 얻을 암호를 해독하고 전역 변수
- 에 저장 이미 별도의 도우미 파일을 이동하려고
기능을 암호화하는 더 전화에서 사용하고 단지 파일 곳이 헬퍼 파일을 포함 암호화/해독 논리가 있지만 단어 "비동기"은 혼란을 야기합니다. 헬퍼를 읽고 암호화/복호화를 수행하지만 암호화 로직이 비동기 적으로 사용하기 전에이 도우미가 초기화하여 KEY 값을 반환했는지 확인할 수 없습니다. 콘솔에서 "처리되지 않은 약속, 거부하겠다고 약속 함"과 같은 오류 메시지가 표시됩니다.
Encrypt (inputData, decryptedKey) 함수가 decryptedKey를 사용하기 전에 decryptedKey가 초기화되는 것을 보장하지 않습니다.
나는() (이 app.run되고, 각도에) 같은 nodejs에 뭔가가 무엇을 수행 할 수 있습니다
application.start() {
// do some logic before all other actions
}
당신은 의미 :.. 'application.listen (포트, 기능() { sql.query ("쿼리 키를 얻기 위해"[매개 변수], 기능 (데이터) { });' 좋아,이 듣기 기능 밖에서 사용할 수 있도록 글로벌 수준에서 검색된 값을 저장하고 프로젝트 등에서 도우미, 경로 및 기타 파일에 사용할 수있는 방법은 무엇입니까? – frnfla
왜 저장하고 있습니까? 서버가 시작될 때마다 데이터베이스를 가져와야하는 경우 데이터베이스의 값은 무엇입니까? 일부 구성 파일에 유지하지 않는 이유는 무엇입니까? –
그 이유는 요청 때문입니다. 그의 키는 데이터베이스에 암호화되어 있습니다. 믿어, 나도 설정에 저장되기를 바랐다. 내가 질문에서 언급했듯이, 나는 db로부터 검색하고 모든 암호화/복호화 호출에서 그것을 해독하는 솔루션을 가지고 있으며, 지금은 "콜백 (callbacks)"을 가지고있는 것처럼 나쁜 습관으로 보인다. 앱을 시작할 때 한 번만 할 수 있다면 db에 대한 호출과 키 해독과 관련하여이 두 콜백을 제거 할 수 있습니다. – frnfla