最新的水线现在支持协会。以下是一对多
的示例// 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'
}
}
});
这会在宠物集合上创建一个名为owner
的字段。除了使用现有数据库之外,这没什么问题。它称之为外键owner_id
。
无论如何都要覆盖数据库中使用的字段名称?
答案 0 :(得分:8)
您可以通过设置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为您处理身份和连接,除非您真的想要覆盖默认值。