2016-03-23 20 views
0

私は以前、JavaScriptバックエンドを持つAzureモバイルサービスを使用していました。今度は、node.jsバックエンドで新しいAzure Mobile Appに切り替えました。 node.jsで扱い方が違うので、以前のバックエンドで使用していた簡単なことをどうやって行うのか尋ねたいと思います。Azure Mobile App node.jsバックエンド - カスタムクエリとパッシングパラメータ

最初に、たとえば、カスタムクエリを実行するために、サーバー側で「読み取り」または「挿入」要求を変更する方法があります。あなたには、いくつかの他のものが実行得ている、クライアントがサーバからの読み込み時はいつでも、見ることができるように

function read(query, user, request) { 
var visitorID = request.parameters.visitor; 
var liked = request.parameters.liked; 
var link = request.parameters.link; 
if (visitorID && !liked && !link) { 
    if (visitorID.indexOf(" ") == -1) { 
     var sqlUnique = "SELECT TOP 1 * FROM ........;"; 
     mssql.query(sqlUnique, { 
      success: function(results) { 
       if(results.length > 0) { 
        request.respond(statusCodes.OK, results); 
       } 
       else { 
        request.respond(statusCodes.BAD_REQUEST, {error: 'An error message.'}); 
       } 
      }, 
      error: function(err) { 
       request.respond(statusCodes.BAD_REQUEST, {error: 'There was a problem with the request.'}); 
      } 
     }); 
    } else { 
     request.respond(statusCodes.BAD_REQUEST, {error: 'Invalid username.'}); 
    } 
} 
else { 
    // no server-side action needed 
    request.execute(); 
} 

}

:私はこのようにそれを行うために使用されます。私の質問は今、Azure Mobile Appのnode.jsバックエンドで同じことをする方法です。特に、クライアントが要求内のいくつかのパラメータを渡すとき。 node.jsでこれらのパラメータを読み取るにはどうすればよいですか?また、リクエストでクエリを実行する前にカスタムクエリを実行するにはどうすればよいですか?

誰かが上記のJavaScriptコードをnode.jsに移植する手助けをすることができたら、私は非常に満足しています!

答えて

1

私が誤解していない場合、モバイルアプリケーションのEasyTablesスクリプトでテーブル操作でカスタムSQL stmtをクエリしたいとします。

カスタムミドルウェアに「use()」を使用して、表に対するすべてのリクエストに対して実行されるミドルウェアを、azure-mobile-apps sdkのドキュメントの説明としてhttp://azure.github.io/azure-mobile-apps-node/module-azure-mobile-apps_express_tables_table.html#~useに指定できます。

var queries = require('azure-mobile-apps/src/query'); 
var readMiddleware = function(req,res,next){ 
    var table = req.azureMobile.tables('table2'), 
    query = queries.create('table2') 
      .where({ TestProperty : req.body.testproperty }); 
    table.read(query).then(function(results) { 
     if(results){ 
      req.someStoreData = somehander(results); //some hander operations here to get what you want to store and will use in next step 
      next(); 
     }else{ 
      res.send("no data"); 
     } 
    }); 
}; 

table.read.use(readMiddleware, table.operation); 
table.read(function (context) { 
    console.log(context.req.someStoreData); 
    return context.execute(); 
}); 

SO、Query other tables in insert function of Azure Table Storageの同様の質問を参照できます。

そして、テーブル操作閉包のパラメータをcontext.req.query.someparamsで得ることができます。私たちはexpressjsのパラメータを扱います。 GitHubのcode sampleを参照できます。

+0

あなたの答えをありがとう。しかし、私はSQLクエリを書く必要がありますか? "SELECT * FROM table WHERE ...." – XHotSniperX

+0

こんにちは@XHotSniperX、実際には、2つのアプローチがあります.1つはクエリオブジェクトを使用する方法です。http://azure.github.io/azure-mobile-appsを参照してください。 -node/module-azure-mobile-apps_query.html。 –

+1

もう1つのアプローチは、あなたの必要と思われるSQL stmtを使用することです.GitHubのコードサンプルを参照することができます。https://github.com/Azure/azure-mobile-apps-node/blob/master/samples/custom -api-sql-stmt/api/completeall.jsと同様のコードスニペットをミドルウェアで構築することができます。 –

関連する問題