2016-06-29 12 views
0

私は、Node.jsバックエンドを持つAzure App Service(モバイルアプリケーション)プロジェクトで作業しています。Azure Node.js Appサービス - カスタムプロビジョニングを作成する

私は複数のユーザーレベルがあり、特定のAPIメソッドは非昇格ユーザーには適用されません。

  • ノーマルユーザー
  • スーパーユーザー
  • 内部ユーザー(従業員)

私は機能が正しく利用者の状態を確認し、予防するためのコードを構築しています:基本的に、私は、ユーザーの3つのレベルを持っています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たコードを適用しようとすることで、このコードになりました。

"Promise 'という名前を見つけることができません"というコンパイラエラーが発生します。

基本的に、私はこの共有コードメソッドで自分の約束事を構築する方法についていないので、このメソッドを呼び出す他のメソッドが実行を待つことができます。私はこのメソッドを "可"にしようとしていると思います。 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 Onlineの "Monaco"(Easy APIやEasy Tableを編集するときはオンラインエディタ)を使用するだけです。 をクリックします。コンソールボタンを開き、コマンドnpm install promise --saveを実行してモバイルアプリケーションにモジュールをインストールし、package.jsonファイルに設定します。 enter image description here

次に、ディレクトリ内に共有スクリプトを作成し、Easy APIスクリプトで呼び出すことができます。

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") 
      } 
     }) 
    } 
} 

私はpromise機能と共有するスクリプトを作成
enter image description here

:クイックリファレンスのために、私はシンプルな構造を構築しますそれ以上の心配があれば、私に知らせてください。

関連する問題