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

编程入门 行业动态 更新时间:2024-10-04 21:23:57

如何使用 Sequelize 在 postgres 中创建对象<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组?"/>

如何使用 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: []”以将空数组设置为默认值。

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

更多推荐

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

本文发布于:2024-05-30 22:34:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770997.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   如何使用   对象   postgres   Sequelize

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!