两个模型的相同db表

时间:2016-01-30 14:39:57

标签: javascript node.js loopbackjs strongloop

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

http://localhost:3000/api/partners

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

http://localhost:3000/api/vendors

没有任何结果。

供应商和客户几乎相同,只有他们的类型和其他两个属性不同。我希望从表格partner获取所有类型'供应商'来自端点

http://localhost:3000/api/vendors

以及

中所有类型为client的合作伙伴
http://localhost:3000/api/clients

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

修改模型/ vendor.js

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

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

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

在资源管理器中,我可以在partner&#39> 模型架构

上看到vendor的属性

1 个答案:

答案 0 :(得分:2)

是的。您只需要更新options on the models' config files以指向特定的表。确保您只识别每个模型中与该模型相关的属性(而不是另一个模型),然后您可以手动inject the type before saving

common/models/partner.json AND common/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();
  });
};