Ватерлинии ассоциации, изменить внешний ключ?
Последний ватерлинии теперь поддерживает ассоциации. Вот пример один ко многим
// 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
,
Есть ли способ переопределить имя поля, используемого в базе данных?
1 ответ
Вы можете изменить имя столбца, используемого для любого атрибута модели, установив 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 управлять идентификацией и связью для вас, если вы действительно не хотите переопределить значения по умолчанию.