Knex: Pilih kolom terhitung?

Dibuat pada 18 Des 2014  ·  3Komentar  ·  Sumber: knex/knex

Saya mencoba menulis kueri menggunakan ekstensi jarak bumi postgresql dan saya ingin mengembalikan kolom terhitung, tetapi saya terus mendapatkan kesalahan tentang: entri klausa FROM yang hilang untuk tabel "670906,-79". Ini mungkin karena pengurai berpikir bahwa sebuah titik memisahkan nama tabel dari nama kolom, tetapi dalam kasus saya, saya melakukan perhitungan (lihat contoh kueri di bawah). Apakah ada cara untuk mengatasi ini?

Possibly unhandled error: missing FROM-clause entry for table "670906,-79"
    at Connection.parseE (/usr/local/lib/node_modules/pg/lib/connection.js:534:11)
    at Connection.parseMessage (/usr/local/lib/node_modules/pg/lib/connection.js:361:17)
    at Socket.<anonymous> (/usr/local/lib/node_modules/pg/lib/connection.js:105:22)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:764:14)
    at Socket.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:426:10)
    at emitReadable (_stream_readable.js:422:5)
    at readableAddChunk (_stream_readable.js:165:9)
    at Socket.Readable.push (_stream_readable.js:127:10)
  var columns = [
    'id',
    '(earth_distance(ll_to_earth(lat, lng), ll_to_earth(43.670906, -79.393331)) as distance)'
  ];
  var result = knex
    .select(columns)
    .from('stores')
    .whereRaw('earth_box(ll_to_earth(43.670906, -79.393331), ?) @> ll_to_earth(lat, lng)', [radiusInStatuteMiles])
question

Komentar yang paling membantu

Anda harus menggunakan knex.raw untuk kolom terhitung Anda, sehingga tidak dikutip. Berikut ini harus bekerja:

var columns = [
  'id',
  knex.raw('earth_distance(ll_to_earth(lat, lng), ll_to_earth(43.670906, -79.393331)) as distance')
];
var result = knex
.select(columns)
.from('stores')
.whereRaw('earth_box(ll_to_earth(43.670906, -79.393331), ?) @> ll_to_earth(lat, lng)', [radiusInStatuteMiles])

Semua 3 komentar

Anda harus menggunakan knex.raw untuk kolom terhitung Anda, sehingga tidak dikutip. Berikut ini harus bekerja:

var columns = [
  'id',
  knex.raw('earth_distance(ll_to_earth(lat, lng), ll_to_earth(43.670906, -79.393331)) as distance')
];
var result = knex
.select(columns)
.from('stores')
.whereRaw('earth_box(ll_to_earth(43.670906, -79.393331), ?) @> ll_to_earth(lat, lng)', [radiusInStatuteMiles])

Terima kasih! Persis apa yang saya butuhkan. Entah bagaimana tidak berpikir untuk menggunakan knex.raw .

Terima kasih kembali!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

aj0strow picture aj0strow  ·  3Komentar

mtom55 picture mtom55  ·  3Komentar

nklhrstv picture nklhrstv  ·  3Komentar

olaferlandsen picture olaferlandsen  ·  3Komentar

legomind picture legomind  ·  3Komentar