2017-06-22 69 views
0

我正在使用帶有Feathersjs的PostgresSQL數據庫,通過Knex連接這兩個數據庫。數據庫表(NewTable)是使用外鍵創建的,引用了用戶服務。Feathersjs通過API檢索外鍵值

以下描述數據庫表。

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

在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: [] 
},