2017-01-10 10 views
0

GEOMETRY( "Point")というプロパティ 'location'を持つレストランモデルがあります。Sequelize - where句の列の関数

models.Restaurant.findAll({ 
    attributes: ["*", [models.sequelize.fn("ST_Distance_Sphere", models.sequelize.fn("ST_MakePoint", latitude, longitude), models.sequelize.col("location")), "distance"]], 
    where: { 
     xxx: { 
      $lte: radius 
     } 
    } 
}).then(function(dishes) { 
    res.status(200).json({dishes: dishes}) 
}); 

私はxxxはここで私が書くべきか見当もつかない:私は私にある半径内のすべてのレストランを与えるsequelizeでクエリを記述しようとしています。私はあらゆる種類のものを試しましたが、毎回エラーが発生します。 選択クエリでは、座標(緯度、経度)からポイントを作成する関数を最初に呼び出して、現在のユーザーにします。それから私はレストランの場所までの距離を計算する関数を使用します。
私はpostgres btwを使用しています。

答えて

1

私は半径を想定していますが、ユーザーがどこにあるか計算したポイントは、 xxxは距離

でなければならないことであるdocを確認し、最後のクエリに気づく:

Model.findAll({ 
    where: sequelize.where(sequelize.fn('FUNCTION', 
      sequelize.col('field')), 'value') 
}); 
+0

Thxをを!私はこれがうまくいくと思います。私はいくつかのテストデータを作成する必要があるが、生成されたクエリは正常に見えるので、まだテストすることができませんでした。 – Joachim