SequelizeDatabaseError:运算符不存在:字符变化 [] @> 字符变化
Posted
技术标签:
【中文标题】SequelizeDatabaseError:运算符不存在:字符变化 [] @> 字符变化【英文标题】:SequelizeDatabaseError: operator does not exist: character varying[] @> character varying 【发布时间】:2017-06-23 04:38:45 【问题描述】:当我尝试在数组数组中搜索一个数组值时出现上述错误。我的代码:
sequelize.define('room',
'id' : 'type' : DataTypes.INTEGER, 'primaryKey' : true, 'autoIncrement' : true,
'tutor' : 'type' : DataTypes.INTEGER, 'allowNull' : false,
'students' : 'type' : DataTypes.ARRAY(DataTypes.STRING), 'allowNull' : false,
'subject' : DataTypes.STRING,
'date_time' : DataTypes.DATE,
'status' : 'type' : DataTypes.STRING , 'defaultValue' : "active",
)
var queryString = "Select * from rooms where status = :statusVar and students @> ANY(:stuArray::character varying[]) ORDER BY CASE when :orderingVar = 'date_time DESC' then date_time end DESC, case when :orderingVar = 'date_time' THEN date_time end ASC OFFSET :offsetNumber LIMIT :limitNumber;"
return sequelize.query(queryString,
replacements:
statusVar: status,
orderingVar: orderVar,
limitNumber: itemPerPage,
offsetNumber: ((pageNumber-1)*itemPerPage),
tutArray: '' + tutorUserId.toString() +'',
stuArray: ['' + studName.toString() + '']
,
type: sequelize.QueryTypes.SELECT)
其中 studName = [艾米丽,约翰,德克斯特];
我想查找“学生”列包含任何学生姓名的所有记录,即 Emily 或 John 或 Dexter
【问题讨论】:
【参考方案1】:我最终做了以下事情并且成功了
var queryString = "Select * from rooms where students && :stuArray::varchar[] and status = :statusVar ORDER BY CASE when :orderingVar = 'date_time DESC' then date_time end DESC, case when :orderingVar = 'date_time' THEN date_time end ASC OFFSET :offsetNumber LIMIT :limitNumber;"
'&&' 是重叠(具有共同元素)运算符 例如:ARRAY[1,4,3] && ARRAY[2,1] 返回 true。请注意,运算符的右侧也应该是这种格式的数组stuArray: ['' + studName.toString() + '']
,即['Emily, John, Dexter']
【讨论】:
以上是关于SequelizeDatabaseError:运算符不存在:字符变化 [] @> 字符变化的主要内容,如果未能解决你的问题,请参考以下文章
获取 DatabaseError [SequelizeDatabaseError],不正确的整数值
SequelizeDatabaseError:无法截断外键约束中引用的表
收到以下错误:“SequelizeDatabaseError 列“createdAt”不存在”
未处理的拒绝 SequelizeDatabaseError:无法添加外键约束