含有任意外键的一对多水线

时间:2015-06-18 23:16:01

标签: waterline

两个模型之间是否可能存在单边一对多的关系?

我想要实现的是一个插件架构,核心应用服务器有一组基本模型,但不同客户端的具体实现可以包括自定义数据插件。

所以我有一个核心Entity(超简化)的概念:

{ identity: 'entity', attributes: { id: 'integer', type: 'string' } }

好的,现在我要添加一个Passport插件来存储登录凭据。

{ identity: 'passport', attributes: { id: 'integer', protocol: 'string', username: 'string', password: 'string', entity: { model: 'Entity' } } }

到目前为止一切顺利。现在我想添加一个User插件,User有效地扩展Entity,但User可以拥有多个护照。所以这就是我先试过的:

{ identity: 'user', attributes: { id: 'integer', name: 'string', email: 'string', entity: { model: 'Entity' }, passports: { collection: 'Passport', via: 'entity' } } }

现在水线中的事情已经不复存在了(但它是一个非常合理的数据模型)。这是错误:

Trying to associate a collection attribute to a model that doesn't have a Foreign Key. user is trying to reference a foreign key in passport

练习的重点是Entity是一个相当抽象的概念,像Passport之类的东西应该添加行为而不必具体知道具体实现是什么(User ) 好像。因为我想要一个插件架构,Passport无法明确了解User

否则它将是一个非常优雅的解决方案。有没有办法诱使Waterline做我想做的事情?感谢。

0 个答案:

没有答案