最新的水线现在支持关联。这是一对多的示例
// A user may have many pets
var User = Waterline.Collection.extend({
identity: 'user',
connection: 'local-postgresql',
attributes: {
firstName: 'string',
lastName: 'string',
// Add a reference to Pets
pets: {
collection: 'pet',
via: 'owner'
}
}
});
var Pet = Waterline.Collection.extend({
identity: 'pet',
connection: 'local-postgresql',
attributes: {
breed: 'string',
type: 'string',
name: 'string',
// Add a reference to User
owner: {
model: 'user'
}
}
});
这会在pet集合上创建一个名为
owner
的字段。除了使用现有的数据库之外,这都很好。称为外键owner_id
。无论如何,有否覆盖数据库中使用的字段名?
最佳答案
您可以通过设置columnName
属性来更改用于任何模型属性的列名:
attributes: {
breed: 'string',
type: 'string',
name: 'string',
// Add a reference to User
owner: {
columnName: 'owner_id',
model: 'user'
}
}
还要注意,在Sails中定义模型时,您不应直接从Waterline扩展,而只需将模型文件以适当的名称保存在
/api/models
中,例如User.js
:module.exports = {
attributes: {
breed: 'string',
type: 'string',
name: 'string',
// Add a reference to User
owner: {
model: 'user',
columnName: 'owner_id'
}
}
}
除非您确实想覆盖默认值,否则让Sails / Waterline为您处理身份和连接。