Używając Sequelize i zapytań geoprzestrzennych, jeśli chcę znaleźć "n" najbliższe punkty do określonej lokalizacji, jak powinno wyglądać zapytanie Sequelize?Sequelize zapytanie geoprzestrzenne: znajdź "n" najbliższe punkty do lokalizacji
Załóżmy Mam modelu, który wygląda mniej więcej tak:
sequelize.define('Point', {geo: DataTypes.GEOMETRY('POINT')});
Teraz powiedzmy, że wejście 100 losowo wybranych punktów w db przez coś podobnego:
db.Point.create({geo: {type: 'Point', coordinates: [randomLat, randomLng]}});
Wyobraź mamy lat
i lng
zmienne do zdefiniowania lokalizacji, a my chcemy znaleźć 10 najbliższych punktów do niej. Po uruchomieniu tego zapytania pojawia się błąd:
const location = sequelize.literal(`ST_GeomFromText('POINT(${lat} ${lng})', 4326)`);
db.Point.findAll({
attributes: [['distance', sequelize.fn('ST_Distance', sequelize.col('Point'), location)]],
order: 'distance',
limit: 10
});
// -> TypeError: s.replace is not a function
Każdy pomysł, jaki jest problem/jak go naprawić?
Thx!
Nie jestem pewien, ale wygląda na to, że masz dodatkowe nawiasy kwadratowe wokół atrybutów –
jakieś wiadomości na ten temat? –