0

當我試圖在數組數組中搜索一個數組值時,出現上述錯誤。我的代碼:SequelizeDatabaseError:運算符不存在:字符變化[] @>字符變化

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];

我希望尋找到「學生」列包含任何學生的名字,即,艾米莉或約翰或德克斯特

回答

0

最後我做了以下的所有記錄,它的工作

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}']

相關問題