【问题标题】:sequelize-typescript returns an object which has empty fieldssequelize-typescript 返回一个具有空字段的对象
【发布时间】:2021-07-13 08:11:14
【问题描述】:

我按照sequelize-typescript 文档将我的Model 连接到MySql 数据库,并使用findAll() 方法从数据库中获取数据。
但我从findAll() 方法的响应中得到了空字段


房间模型

@Table({
    tableName: "room",
})
export class Room extends Model<Room> {
    @PrimaryKey
    @AutoIncrement
    @Column
    id: number = -1
    
    @Column
    roomName: string = ""

    @BelongsToMany(() => User, () => PinUserRoom)
    users: User[] = []

    @HasMany(() => Message)
    messages: Message[] = []
}  

为了从数据库中获取数据,我使用了以下代码

Room.findAll({
        include: [Message],
    }).then((result) => {
    console.log(JSON.stringify(result, null, 2));
})  

这是日志信息

[
  {
    "roomName": "",
    "id": 2,
    "messages": []
  },
  {
    "roomName": "",
    "id": 3,
    "messages": []
  },
  {
    "roomName": "",
    "id": 4,
    "messages": []
  },
  {
    "roomName": "",
    "id": 5,
    "messages": [
      {
        "id": 1,
        "passage": "",
        "roomId": -1
      },
      {
        "id": 2,
        "passage": "",
        "roomId": -1
      }
    ]
  }
]  

MySQL 数据库 - 房间表

当我在寻找答案时,我意识到当我在 findAll() 方法中使用 raw: true 时,一切正常,除了数组(查看此处以获取更多信息 sequelize/sequelize-typescript - findAll with HasMany returns an object instead of an array

使用raw: true时的JSON

[
  {
    "id": 2,
    "roomName": "pv",
    "messages.id": null,
    "messages.passage": null,
    "messages.roomId": null
  },
  {
    "id": 3,
    "roomName": "group",
    "messages.id": null,
    "messages.passage": null,
    "messages.roomId": null
  },
  {
    "id": 4,
    "roomName": "bot",
    "messages.id": null,
    "messages.passage": null,
    "messages.roomId": null
  },
  {
    "id": 5,
    "roomName": "channel",
    "messages.id": 1,
    "messages.passage": "this is a message in channel -- 1",
    "messages.roomId": 5
  },
  {
    "id": 5,
    "roomName": "channel",
    "messages.id": 2,
    "messages.passage": "this a 2nd message",
    "messages.roomId": 5
  }
]

为什么不通过raw: true时数据字段为空

【问题讨论】:

    标签: mysql node.js typescript sequelize.js sequelize-typescript


    【解决方案1】:

    发生这种情况是因为更改后您没有删除表。

    1. 放下你的桌子,
    2. 进行重建,
    3. 进行迁移,

    然后再次尝试获取数据

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      相关资源
      最近更新 更多