我正在使用nodejs、express、sql和sequelize。我有两种模式:路线和运输。路线属于运输工具,运输工具有许多路线。我想获取与我的路线相关联的传输,以便获取其数据,例如:
route.getTransport()
或者
route.transport
所以我可以:
route.getTransport().getName()
或者
route.transport.name
所以我从我的数据库里得到了所有的路线:
Route.findAll({
where: {
destination: "Whatever",
origin: "Whatever"
}
})
.catch(err => {
return err;
});
我已经看到,如果我在查询中添加“include”如下:
Route.findAll({
where: {
destination,
origin
},
include: [{
model: db.transport,
as: 'transport'
}]
})
但如果不这样做,我将遍历找到的每个路由,并且无法访问与之相关的传输。有没有一种方法不必添加“include”就可以做到这一点?
路线的模型文件:
module.exports = (sequelize, Sequelize) => {
const Route = sequelize.define("route", {
origin: {
type: Sequelize.STRING(100)
},
destination: {
type: Sequelize.STRING(100)
},
transportId: {
type: Sequelize.INTEGER,
required: true
}
});
return Route;
};
我的传输模型文件:
module.exports = (sequelize, Sequelize) => {
const Transport = sequelize.define("transport", {
name: {
type: Sequelize.STRING(100)
},
type: {
type: Sequelize.STRING(100)
},
capacity: {
type: Sequelize.INTEGER
}
});
return Transport;
};
我的模型的index.js中的“我的关系”部分:
db.transport.hasMany(db.route, { as: "routes" });
db.route.belongsTo(db.transport, {
foreignKey: "transportId",
as: "transport"
});
谢谢您!
1条答案
按热度按时间p8ekf7hl1#
您可以尝试以下代码:
希望对任何人都有帮助。