如何从父表中获取相关记录

问题描述 投票:0回答:1

我有两个桌子。用户是父表,叶子是子表。每个用户都有一个以上的请假请求。users.id是主键,而leaves.userID是外键。我想获取每个休假记录的相关用户记录。

这里是用户模型

import bookshelf from '../config/bookshelf';

const TABLE_NAME = 'users';

/**
 * User model.
 */
class User extends bookshelf.Model {

    /**
     * Get table name.
     */
    get tableName() {
        return TABLE_NAME;
    }

    /**
     * Table has timestamps.
     */
    get hasTimestamps() {
        return true;
    }

    verifyPassword(password) {
        return this.get('password') === password;
    }
}

export default User;

这里是树叶模型

import bookshelf from '../config/bookshelf';

const TABLE_NAME = 'leaves';

/**
 * Client model.
 */
class leaves extends bookshelf.Model {

    /**
     * Get table name.
     */
    get tableName() {
        return TABLE_NAME;
    }

    /**
     * Table has timestamps.
     */
    get hasTimestamps() {
        return true;
    }

    verifyPassword(password) {
        return this.get('password') === password;
    }
}

export default leaves;

这是我的代码来获取叶子记录。

leaves.forge()
        .fetchAll()
        .then(leaves => res.json({
                error: false,
                data: leaves.toJSON()
            })
        )
        .catch(err => res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
                error: err
            })
        );
javascript node.js database bookshelf.js
1个回答
0
投票

除非绝对必要,否则我建议您不要在您的应用程序代码中执行此类功能。您要问的是在数据世界中非常基本的内容,您的DBMS将更有能力处理此类请求。无需通过应卸载到DBMS的请求来减慢您的应用程序的速度。这就是DBMS的用途。不要重新发明轮子。

如果您的DBMS支持视图,则创建一个视图以执行此功能。您也可以在存储过程中执行此操作。这是一个非常简单的JOIN查询,只需3行SQL代码即可完成。拥有View后,您的应用程序可以像从其他任何表中一样从中读取数据。

© www.soinside.com 2019 - 2024. All rights reserved.