两个型号的数据库表相同

Same db table for two models

本文关键字:数据库 两个      更新时间:2023-09-26

是否可以为一个数据库表建模(客户端,供应商)?我制作了一个合作伙伴模型,它使用合作伙伴表。我的客户供应商模型继承自合作伙伴模型。

http://localhost:3000/api/partners

返回数据库表中的所有数据,但是

http://localhost:3000/api/vendors

没有任何结果。

供应商和客户几乎相同,只是它们的类型和另外两个属性不同。我想让表中的所有记录都partner端点中的类型为"vendor"

http://localhost:3000/api/vendors

以及所有具有 client 型的合作伙伴

http://localhost:3000/api/clients

http://localhost:3000/api/partners应隐藏)

编辑型号/供应商.js

{
  "name": "vendor",
  "base": "partner",
  "strict": false,
  "idInjection": false,
  "options": {
    "validateUpsert": true,
    "postgresql": {
      "table": "partner"
    }    
  },
...
}

重新启动服务器后,我仍然得到:

{
  "links": {
    "self": "http://localhost:3000/api/vendors"
  },
  "data": []
}

在资源管理器中,我可以看到partner的属性vendor模型模式

是的。您只需要更新模型配置文件上的选项以指向特定表。确保仅标识每个模型中与该模型(而不是另一个模型)相关的属性,然后可以在保存之前手动注入type

common/models/partner.jsoncommon/models/vendor.json

...
  "options": {
    "mysql": {
      "table": "partner"
    }
  }
...

然后在每个模型的 JS 文件中添加一个 before save 钩子(common/models/vendor.js):

module.exports = function(Vendor) {
  Vendor.observe('before save', function(ctx, next) {
    ctx.instance.type = 'vendor';
    next();
  });
};