最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用 Sequelize 在 postgres 中创建对象数组?

网站源码admin30浏览0评论

如何使用 Sequelize 在 postgres 中创建对象数组?

如何使用 Sequelize 在 postgres 中创建对象数组?

我的想法是定义一个具有“id”和“message”属性的消息模型,“message”属性将是一个对象数组。

示例:

[{from, to, msg, time}]
分别具有它们的值。

这就是我定义模型的方式:

import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';

const MessageSchema = sequelize.define('messages', {
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    message: {
        type: DataTypes.ARRAY(DataTypes.JSONB)
}, {
    freezeTableName: true
});

export default MessageSchema;

当我运行应用程序时,我得到了这个:

column "message" cannot be cast automatically to type jsonb[]

我该如何解决?

回答如下:

您遇到的错误告诉我们您正在使用的 pgSQL 数据库无法自动将“消息”列转换为 JSONB 数组类型。

一种可能的解决方案是通过使用“DataTypes.ARRAY”方法的“类型”选项将列类型显式定义为 JSONB 数组。

请尝试使用下面的代码。

import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';

const MessageSchema = sequelize.define('messages', {
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    message: {
        type: DataTypes.ARRAY(DataTypes.JSONB),
        allowNull: false,
        defaultValue: []
    }
}, {
    freezeTableName: true
});

export default MessageSchema;

我添加了“allowNull: false”以确保始终需要“消息”列,并添加了“defaultValue: []”以将空数组设置为默认值。

希望本次更新对您有所帮助

发布评论

评论列表(0)

  1. 暂无评论