2

現在、Windows Azure Mobile Service を使用して HTML/JS アプリに取り組んでいます。2 つのテーブルがあります。1 つはアトラクション [attractionTable(attractionId, address,...)] に関する情報を格納し、もう 1 つはどのユーザーがどのアトラクションを気に入っているかを追跡します [favoriteAttractionTable(attractionId, userId, fav(bool))]。

クライアントがお気に入りのアトラクションのリストを取得したい場合、サーバーへのリクエストは 1 つだけです。サーバー側で、favoriteAttractionTable の読み取りスクリプトを次のように編集しました。

function read(query, user, request) {

   var sql =
       "FROM routesTable rt, favoriteAttractionTable ft " +
        "WHERE rt.id = ft.routeId;";

    mssql.query(sql, {
        success: function(results) {
            request.respond(statusCodes.OK, results);
        }});

}

私のJavaScriptコードでは、次のリクエストを使用しています

function loadFavoriteAttractions(){
    favTable = client.getTable("favoriteAttractionTable");
    var query = favTable.where({
            fav: true,
        userId : 0
        }).read().done(function (results) {
            console.log(results);
        }, function (err) {
            alert("Error: " + err);
        });
}

基本的に、ユーザーがお気に入りに追加したすべてのアトラクションの情報を取得しますが、適切な userId に関連するものだけを受け取るように var sql を変更したいと考えています。

query.getComponents();

私のサーバースクリプトで queryString: '((fav eq true) and (userId eq 0))' を示しています。しかし、どうすればこの情報にアクセスできるのでしょうか?!

request.parameters.fav

おそらく未定義です。

どんなアドバイスも大歓迎です:)

4

1 に答える 1

6

スクリプトでリクエスト パラメータにアクセスする場合は、次のコードのようなカスタム クエリ文字列パラメータを使用することをお勧めします。

function loadFavoriteAttractions(){
    favTable = client.getTable("favoriteAttractionTable");
    var query = favTable.read({
        fav: true,
        userId : 0
    }).done(function (results) {
        console.log(results);
    }, function (err) {
        alert("Error: " + err);
    });
}

request.parametersこれらのパラメーターは、サーバー側のオブジェクトを介してアクセスされます。

興味がある場合は、詳細を以下に示します。このメソッドを使用すると、サーバーに渡されるODatawhereに変換されるテンプレート オブジェクトが渡されます。サーバーはそれを解析し、適切な SQL句に変換してデータベースに送信します。したがって、元のコードは次のようなリクエストを送信します (スペースは に置き換えられますが、わかりやすくするためにここに残します)。$filterWHERE%20

GET .../tables/favoriteAttractionTable?$filter=((fav eq true) and (userId eq 0))

お気づきのように、関数を介してアクセスできますgetComponentsが、その時点で、式を自分で解析して比較の値を取得する必要があります。クライアントから渡された値にアクセスしたい場合、前述したように、最も簡単な方法はそれらを「通常の」クエリ文字列パラメーターとして渡すことです。私が送信したコードでは、送信されるリクエストは次のようになります

GET .../tables/favoriteAttractionTable?fav=true&userId=0

そして、それらの値から直接取得できますrequest.parameters(値の型は文字列になるため、それらをブール値の数値として扱いたい場合は、適切な変換を行う必要があります)。

于 2013-07-02T02:56:50.643 に答える