2016-06-29 11 views
0

Node.js 백엔드가있는 Azure App Service (모바일 앱) 프로젝트에서 작업 중입니다.Azure Node.js App 서비스 - 맞춤형 약속 만들기

나는 여러 사용자 수준이 있으며 특정 API 방법은 승격되지 않은 사용자에게 제한이 없어야합니다. 기본적으로, 사용자의 3 가지 레벨이 있습니다

  • 일반 사용자
  • 슈퍼 사용자
  • 기능이 제대로 사용자의 상태를 확인하고 방지하기 위해 내가 코드를 구축 (직원)

  • 내부 사용자 API 메소드가 사용되지 않습니다. 이 코드는 여러 API 메서드에서 사용되므로 공유 API 모듈을 만들어서 API 전체에서 동일한 코드가 20 번 이상 반복되지 않도록해야합니다.

    내가 실행중인 문제는 부울 값으로 해결할 내 공유 코드에서 약속을 올바르게 반환하는 방법을 알 수 없다는 것입니다.

    는 여기에 내가 (비 기능 코드)를 할 노력하고있어의 인스턴스입니다 :

    module.exports = { 
        isEmployee: function(req, next) { 
         var context = req.azureMobile; 
         var user  = context.user; 
         var username = user.id; 
         var query = { 
          sql  : 'Exec usp_...', 
          parameters : [ { name: '...', value: ... } ] 
         }; 
    
         // The following line has compiler error 
         return new Promise(function (fulfill, reject) { 
          context.data.execute(query).then(function (results) { 
           var result = results.Result; 
           if (result === 'Success') { 
            fulfill(true);     
           } else { 
            fulfill(false);     
           } 
          }).catch(next);   
         });  
        } 
    }; 
    

    은 내가 here 발견 코드를 적응을 시도하여이 코드에 도착.

    "약속 '을 찾을 수 없습니다"라는 컴파일러 오류가 발생합니다.

    기본적으로,이 공유 코드 메서드에서 내 자신의 약속을 구성하는 방법에 주저하고 있으므로이 메서드를 호출하는 다른 메서드는 실행을 기다릴 수 있습니다. 나는이 방법을 "사용할 수있는"방법으로 만들려고 노력하고 있다고 생각한다. Azure Node.js에서 어떻게하면됩니까?

  • 답변

    1

    대부분의 아마, 아직

    당신이 컴퓨터에 설치된 노드 버전에서 사용 v8의 버전을 확인할 수 있습니다 Promise 생성자를 지원하지 않는 당신의 nodejs 버전 (인턴 nodejs 버전 자체)에서 사용 V8의 버전 ?

    node -e 'console.log(process.versions.v8);'을 사용하면됩니다.

    하지만 내 생각에 당신은 NPM 모듈 es6-promise을 설치해야합니다과 함께 할 수

    설치 : npm install es6-promise

    사용 : 당신이 당신의 모바일 앱에 Promise 모듈을 설치하는 것을 잊지 보인다 var Promise = require('es6-promise').Promise;

    +0

    Azure 콘솔에서 해당 코드를 실행하면 "3.14.5.9"오류가 발생합니다. 그 대답인가? – mbm29414

    +0

    'es6-promise' 모듈을 설치했다면 다른 것을 망치고 있지 않습니까? Azure SDK와 호환되는 것들입니까? – mbm29414

    +0

    "3.14.5.9"는 정확하며 약속을 지원하지 않습니다. 그리고'es6-promise'는 오래된 nodejs 버전 (https://www.npmjs.com/package/es6-promise)을 가진 많은 사람들이 사용합니다. 그것은 실제로'polyfill'입니다. 그래서 나는 그것이 아무것도 망칠 것이라고 생각하지 않습니다. 그러나 당신은 당신 자신에 있습니다 :) – Oxi

    0

    .

    간단하게 Visual Studio 온라인 "Monaco"(Easy API 또는 Easy Tables를 편집 할 때 온라인 편집기)를 사용할 수 있습니다. 을 클릭하십시오. 콘솔 단추를 열고 npm install promise --save 명령을 실행하여 모바일 응용 프로그램에 모듈을 설치하고 package.json 파일로 구성하십시오. enter image description here

    그런 다음 디렉토리에서 공유 스크립트를 만들고 Easy API 스크립트에서 호출 할 수 있습니다.
    enter image description here

    내가 promise 기능을 공유 스크립트를 만들 :

    var Promise = require('promise'); 
    exports = module.exports = function customP(context) { 
        var query = { 
         sql: 'SELECT * from TodoItem', 
        }; 
        return new Promise(function (fulfill, reject) { 
         context.data.execute(query).then(function (results) { 
          if (results.length > 0) { 
           fulfill(true);     
          } else { 
           fulfill(false);     
          } 
         })  
        }); 
    } 
    

    그리고 쉬운 API 스크립트 api/test.js에서 호출 :

    var customP = require('../customP'); 
    module.exports = { 
        "get":function(req,res,next){ 
         customP(req.azureMobile).then(function(data){ 
          if(data){ 
           res.json("it's true"); 
          }else{ 
           res.json("it's false") 
          } 
         }) 
        } 
    } 
    

    빠른 참조를 위해, 나는 간단한 구조를 구축 더 이상의 우려 사항이 있으면 알려 주시기 바랍니다.