Вы создаете столбец (user
) с тем же именем, что и отношение объекта, что, вероятно, вызывает конфликт.По умолчанию Sequelize автоматически создает столбец userId
(или user_id
в зависимости от настроек), и вам не нужно включать его в define()
или ассоциацию, тогда как вы используете user
для идентификатора отношения.
Используйте свойство as
, чтобы определить 1:n
отношения по мере их множественного числа.
sensor.js
'use strict';
module.exports = (sequelize, DataTypes) => {
const Sensor = sequelize.define('Sensor', {
sensorName: DataTypes.STRING,
}, {});
Sensor.associate = function(models) {
Sensor.hasMany(models.User, { as: 'users' })
};
return Sensor;
};
user.js
'use strict';
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING
}, {});
User.associate = function(models) {
User.belongsTo(models.Sensor)
};
return User;
};
запрос
Sensor.findAll({
include: [{
model: User,
as: 'users,
}],
})