#node.js #postgresql
#node.js #postgresql
Вопрос:
Новичок в postgresql, и я использую node и Sequelize. У меня есть база данных с таблицами транспортных средств и фотографиями:
¦Vehicles:
¦
¦ id 99
¦ make Nissan
¦ model Micra
¦Photos:
¦
¦ id 1 2
¦ photoUrl xxx yyy
¦ photoOrder 1 2
¦ vehicleId 99 99
То, на что я надеюсь при поиске по идентификатору транспортного средства, — это вывод, подобный этому:
[
{
"id":99,
"make":"Nisan",
"model":"Micra",
"photos":[
{
"photoOrder":1,
"photoUrl":"xxx"
},
{
"photoOrder":2,
"photoUrl":"yyy"
}
]
}
]
Ассоциации, которые у меня есть:
db.photos.belongsTo(db.vehicles);
db.vehicles.hasMany(db.photos);
Я могу добавлять транспортные средства и добавлять фотографии. Когда я извлекаю транспортное средство (ы), я получаю информацию о транспортном средстве, но без фотографий:
export function findAll(req, res) {
Vehicle.findAll()
.then(data => {
res.send(data);
})
.catch(err => {
...
});
}
Правильно ли я определил свои ассоциации и как мне достичь желаемого результата?
Ответ №1:
Вы можете получить доступ к фотографиям с помощью getPhotos
функции на транспортных средствах. Если вы хотите охотно загружать их, то вам нужно сделать что-то вроде
Vehicle.findAll({
include: Photos
})
Документация здесь .. https://sequelize.org/master/manual/assocs.html#eager-loading-example
Комментарии:
1. Если вы всегда всегда хотите фотографии.. вы должны посмотреть на области… sequelize.org/master/manual/scopes.html
2. Идеальный. Спасибо. И я внимательно рассмотрю области видимости. Также спасибо.