微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Bookshelf.js中进行原始查询

我想实现这一目标
SELECT id,( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0,20;

https://developers.google.com/maps/articles/phpsqlsearch_v3?hl=fr#createtable

如何使用Bookshelf进行此查询.

我现在有这个:

var raw = '( 3959 * acos( cos( radians(37) ) * cos( radians( '+ req.params.lat + ' ) ) * cos( radians( '+req.params.lng+' ) - radians(-122) ) + sin( radians(37) ) * sin( radians( '+req.body.lng+' ) ) ) ) AS distance';


new Places().query(function(qb) {
    qb.where('lat',req.params.lat); 
    qb.where('lng',req.params.lng); 
    qb.column(raw);
    qb.having('distance','>',25);
}).fetch({ debug: false }).then(function(collection) {
    console.log(collection);

    if (collection === undefined) {
        // no such result
        res.json(404,{error: "No Places found."});
    } else {
        // found,list json
        res.json(200,collection);
    }
});

解决方法

我发现这个工作..没有qb.需要实例/参考:
var Bookshelf = require('bookshelf').MysqLAuth;

var rawsql = 'SELECT .. <etc>';

Bookshelf.knex.raw(rawsql).then(..);

原文地址:https://www.jb51.cc/js/158849.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐