如何使用 jsonb 运算符"@>"在羽毛.js/knex 服务中搜索



使用feathersjs/knex和postgresql。

(简化的(SQL查询是:

SELECT * FROM projects WHERE team_members @> '{"members":[{"id": 1}]}';

如何在羽毛/knex服务中实现此请求?我尝试过的一切都会引发Bad Request错误。

我尝试使用RawQuery,但无法使其正常工作。我尝试使用常规查询,但默认使用=操作员而不是@>(因为它是正常的(。

我正在考虑在服务器上构建单独的服务,但我想知道是否没有更轻松的方法可以做到这一点。我刚从羽毛js开始,我敢肯定我缺少一些东西,它必须非常简单。

knex对该操作员没有任何特定的支持。构建在KNEX顶部的fiveptive.js支持JSONB操作员,因此长期使用https://vincit.github.io/objection.js/api/query-builder/query-builder/find-methods.html#wherejsonsupersetof。

那是用knex说的,你可以这样做:

knex('projects').whereRaw(`?? @> ?::jsonb`, [
  'team_members', 
  JSON.stringify({members:[{id: 1}]})
])

创建以下查询:

{ method: 'select',
  bindings: [ '{"members":[{"id":1}]}' ],
  sql: 'select * from "projects" where "team_members" @> ?::jsonb' }

相关内容

  • 没有找到相关文章

最新更新