【问题标题】:How do I select specific column data to be displayed in my bookshelf model belongsTo relationship in Nodejs?Nodejs中如何选择要在我的书架模型belongsTo关系中显示的特定列数据?
【发布时间】:2021-01-08 00:27:57
【问题描述】:

这是我想做的一个人为的例子:

假设我有一个包含球队和球员的数据库:

team: 
->id
->color
->rank
->division

player: 
->id
->team_id
->number
->SECRET

还有以下书架型号:

var Base = require('./base');

const Player = Base.Model.extend(
    {
        tableName: "players",
    },
    nonsecretdata: function() {
        return this.belongsTo('Team')
    },
    {
        fields: {
            id: Base.Model.types.integer,
            team_id: Base.Model.types.integer,
            number: Base.Model.types.integer,
            SECRET: Base.Model.types.string,
        }
    }
);

module.exports = Base.model('Player', Player);

var Base = require('./base');

const Team = Base.Model.extend(
    {
        tableName: "teams",
    },
    {
        fields: {
            id: Base.Model.types.integer,
            color: Base.Model.types.string,
            rank: Base.Model.types.integer,
            division: Base.Model.types.string,
        }
    }
);

module.exports = Base.model('Team', Team);

我的问题是,我怎样才能限制玩家的范围,以便通过回调 nonsecretdata 加入玩家和团队的调用不获取 SECRET?

我是 Bookshelf 的新手,所以如果需要任何其他信息,请告诉我。谢谢

++++++++++++ 编辑:我需要创建一个单独的模型吗?

【问题讨论】:

    标签: node.js bookshelf.js


    【解决方案1】:

    使用 bookshelf 执行此操作的唯一方法是在获取整个模型后从对象中删除各个字段。

    对于这个用例,一个可能更好的解决方案是定义一个自定义数据访问对象类,该类使用 SQL 查询来获取想要获取的信息,然后使用该 DOA 而不是使用书架。这样一来,SQL 代码仍然从请求信息的代码中抽象出来,并且添加到表中的 SECRET 或任何其他潜在的敏感信息将不会包含在提取中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2018-11-03
      • 1970-01-01
      • 2021-01-13
      • 2019-06-15
      相关资源
      最近更新 更多