【问题标题】:Can knex-postgis be used with bookshelfknex-postgis可以和书架一起使用吗
【发布时间】:2016-02-13 04:09:28
【问题描述】:

有人用过knex-postgis吗 https://github.com/jfgodoy/knex-postgis 带书架?文档显示了它是如何固定在 knex 上的,这很棒。我通过书架使用 knex,不知道如何让它工作。

'use strict';

var knex = require('knex')({
  client: 'pg',
  connection: {
    host     : 'XXXXXXX.com',
    user     : 'XXXX',
    password : 'XXXXXX',
    database : 'XXXXX',
    searchPath: 'public'
  }
});

// var st = require('knex-postgis')(knex);
var bookshelf = require('bookshelf')(knex);
bookshelf.plugin('registry');
bookshelf.plugin('virtuals')

module.exports = bookshelf;

这就是我设置 knex 和书架的方式,但我不确定这是如何...

var st = require('knex-postgis')(knex);

在稍后进行书架查询时加入。

【问题讨论】:

  • 您需要使用 queryback 从查询方法访问 knex

标签: node.js bookshelf.js knex.js


【解决方案1】:

是的,你可以。

创建一个带有地理列的 Bookshelf 模型(插入数据库)(在本例中,我的 Bookshelf 模型是一个名为 Event 的模型,带有一个代表 PostGIS 点的 geo 列):

new Event({
  geo: st.geomFromText(`Point(${lat} ${lng})`, 4326)
})
.save()
// ...

现在当您再次查询时,您可以使用knex-postgis 库的转换功能来转换您的点:

Event.collection().query((qb) => {
  qb.select('*', st.asGeoJSON('geo'));
}).fetch().then((collection) => {
  // collection.geo will contain a GeoJSON representation of your column.
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    相关资源
    最近更新 更多