Sequelize错误:未处理的拒绝TypeError:val.replace不是函数吗?

时间:2019-04-10 16:12:31

标签: node.js postgresql sequelize.js

我在PostgreSQL应用中使用Sequelizenodejs并收到错误消息:

  

未处理的拒绝TypeError:val.replace不是函数吗?

我探索了许多答案,但没有一个对我有帮助。

我有一个表,名称为permissions,该表具有以下列和记录:

id           userId                      groupIds

1          xyz@test.com               { 253,254,255 }
2          abc@test.com               { 253,254,255 }
3          xyzabc@test.com            { 253,255 }

groupIdsinteger的数组。

我想访问那些在groupId中以groupIds为形式的记录:

const Models = require('./../../../models/'); // declared all models here correctly.


var getUser = function (groupId) {
  let condition={ where: { $in:{groupIds:groupId} },attributes: ['id', 'userId ] };
        Models.permissions.findAll(condition)
            .then((users) => {
                 console.log(users);
            });
}

getUser(254);

此外,我想补充一点,如果我写的是以下条件,则可以正常工作:

let condition = { where: { id: 3 }, attributes: ['id', 'userId'] };

我在哪里做错了?

根据package.json的版本是

 "sequelize": "^3.27.0", "sequelize-cli": "^2.5.1"

我不想更新续集,因此不能使用[Sequelize.Op.in]

1 个答案:

答案 0 :(得分:0)

字段permissions.groupIds是如何定义的?看起来像一个数组...如果是这样,我认为IN不会起作用。您可以尝试ANY,即

let condition={ where: { sequelize.fn('ANY(groupIds)') : groupId },attributes: ['id', 'userId ] };

或者也许

let condition={ where: {sequelize.col('groupId[s]'), groupId)},attributes: ['id', 'userId ] };

此语法可能不正确-正在使用MySql,它没有像Postgres ....这样的数组。