0

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?

Anatoly
  • 20,799
  • 3
  • 28
  • 42
  • Where do you register models? Look at this https://stackoverflow.com/a/61710568/1376618 answer to compare. – Anatoly Feb 16 '22 at 06:04
  • solve this problem under the code thx https://github.com/tzcodingjs/mini-shop/blob/master/server/dbs/models/index.js – 주종현 Feb 16 '22 at 12:07

0 Answers0