我正在使用带有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列,或者有更好/更简单的方法来执行此操作?
答案 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: []
},