Error message
SequelizeEagerLoadingError: tickers is not associated to user_articles!
node | at Function._getIncludedAssociation (/usr/src/node/node_modules/sequelize/dist/lib/model.js:549:13)
node | at Function._validateIncludedElement (/usr/src/node/node_modules/sequelize/dist/lib/model.js:486:53)
node | at /usr/src/node/node_modules/sequelize/dist/lib/model.js:405:37
node | at Array.map (<anonymous>)
node | at Function._validateIncludedElements (/usr/src/node/node_modules/sequelize/dist/lib/model.js:401:39)
node | at Function.findAll (/usr/src/node/node_modules/sequelize/dist/lib/model.js:1086:12)
node | at processTicksAndRejections (internal/process/task_queues.js:95:5)
node | at async /usr/src/node/routes/article.js:49:24
Schema
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| uid | varchar(100) | NO | MUL | NULL | |
| description | text | YES | | NULL | |
| displayName | varchar(200) | YES | | NULL | |
| symbol | varchar(150) | NO | MUL | NULL | |
| createdAt | datetime | YES | | NULL | |
| updatedAt | datetime | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| symbol | varchar(150) | NO | PRI | NULL | |
| country | varchar(100) | YES | | NULL | |
| industry | varchar(200) | YES | | NULL | |
| ipoYear | varchar(10) | YES | | NULL | |
| sector | varchar(100) | YES | | NULL | |
| marketCap | double | YES | | NULL | |
| name | varchar(250) | YES | | NULL | |
| netChange | double | YES | | NULL | |
| logoUrl | text | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+
const Ticker = sequelize.define("tickers", {
symbol: {
type: DataTypes.STRING,
primaryKey: true,
},
country: {
type : DataTypes.STRING
},
industry: {
type : DataTypes.STRING
},
ipoYear: {
type : DataTypes.STRING
},
sector: {
type : DataTypes.STRING
},
marketCap: {
type : DataTypes.DOUBLE
},
name: {
type : DataTypes.STRING
},
netChange: {
type : DataTypes.DOUBLE
},
logoUrl: {
type : DataTypes.STRING
},
})
Ticker.associate = (models) => {
Ticker.hasMany(models.user_articles , {as : "articles"});
}
const UserArticle = sequelize.define("user_articles", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement : true
},
uid: {
type: DataTypes.STRING,
references: {
model: User,
key : "uid"
}
},
displayName: {
type: DataTypes.STRING,
},
description: {
type: DataTypes.TEXT,
},
symbol: {
type: DataTypes.STRING,
references: {
model: Ticker,
key : "symbol"
}
},
},{
timestamps: true,
});
UserArticle.associate = (models) => {
UserArticle.belongsTo(models.tickers);
}
//query
const result = await UserArticle.findAll({
include: [
{
model: Ticker,
attributes: ["name"]
}
],
order: [['createdAt', 'desc']]
});
i want to make json like this
{
id : 1,
uid : "userId",
description : "description",
displayName : "test@gmail.com",
symbol : "AAPL",
ticker : {
name : "apple inc"
}
}
how to solve it?