数组?"/>
如何使用 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 中创建对象数组?
发布评论