Feathersjs通过API检索外键值

时间:2017-06-22 15:23:12

标签: postgresql knex.js feathersjs

我正在使用带有Feathersjs的PostgresSQL数据库,通过Knex连接两者。数据库表(NewTable)是使用外键创建的,引用了用户服务。

下面描述数据库表。

module.exports = function (app) {
  const db = app.get('knexClient');
  db.schema.createTableIfNotExists('NewTable', table => {
    table.increments('id').primary();
    table.integer('ownerId').references('users.id');
  })

当我通过GET查询时,我会收到ownerId的外键值(整数)。

export function load(id) {
  return {
    types: [LOAD, LOAD_SUCCESS, LOAD_FAIL],
    promise: ({ app }) => app.service('NewTable').get(id)
  };
}

通过GET api检索用户的first_name列而不是userId的正确方法是什么?

我是否需要在NewTable服务的钩子中运行另一个GET api以获取first_name列,或者有更好/更简单的方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

在feathersjs的钩子中创建如下所示的函数。

function populateUser() {
  return populate({
    schema: {
      include: [{
        nameAs: 'sentBy',
        service: 'users',
        parentField: 'ownerId',
        childField: 'id'
      }]
    }
  });
}

在钩子中使用它在GET之后调用它。用户服务列将包含在响应中。

after: {
  all: [],
  find: [],
  get: [
    populateUser(),
    }
  ],
  create: [],
  update: [],
  patch: [],
  remove: []
},