0

Geography で入力したポイントの緯度と経度を保存しました。カスタム API を作成し、次のコードで最も近いポイントを取得できます。

exports.get = function(request, response) {
    var lat = request.query.latitude.replace(",",".");
    var lng = request.query.longitude.replace(",",".");
    var limit = +request.query.limit;
    if (!limit) limit = 20;
    console.log('Filtr: lat - %s, lng - %s, limit - %s', lat, lng, limit);
    var mssql = request.service.mssql;
    var queryString = "SELECT TOP (?) id, title, description, category, city, street, price, startdate, enddate, location.Lat latitude, location.Long longitude, location.STDistance(geography::Point(?, ?, 4326)) AS distance FROM Action ORDER BY distance"
    mssql.query(queryString, [limit, lat, lng], {
        success: function(results) {
            request.respond(statusCodes.OK, results);
        }
    });
};

しかし、すべてのポイントを取得したいのですが、その方法がわかりません。今、スクリプト操作を読んだばかりのとき:

function read(query, user, request) {
    request.execute();
}

私は自分のオブジェクトでこれを取得します:

"location":{
"0":230,
"1":16,
"2":0,
"3":0,
"4":1,
"5":12,
"6":67,
"7":203,
"8":186,
"9":127,
"10":44,
"11":190,
"12":72,
"13":64,
"14":70,
"15":64,
"16":133,
"17":35,
"18":72,
"19":169,
"20":48,
"21":64,
"length":22
},

カスタム API から SQL スクリプトを変更して読み取り操作に適用しようとしていましたが、読み取り操作スクリプトでクエリを変更する方法がわかりません。リクエストを実行した後、成功して作業しようとしていましたが、手遅れです。誰でもこれで私を助けることができますか?

4

1 に答える 1

1

私の問題の解決策を見つけました:

function read(query, user, request) {
  var queryString = "SELECT id, title, description, category, city, street, price, startdate, enddate, location.Lat latitude, location.Long longitude FROM Action";   
  mssql.query(queryString, { 
                success: function(results) { 
                     request.respond(statusCodes.OK, results); 
                } 
          }); 
}

質問する前にこれを最初のオプションとして試しましたが、次の行で試しました:

var mssql = request.service.mssql;

しかし、その後、この行がなくても mssql オブジェクトがある例を見つけましたが、それは機能しています。

于 2013-09-19T14:34:23.357 に答える