我在PostgreSQL
应用中使用Sequelize
和nodejs
并收到错误消息:
未处理的拒绝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 }
groupIds
是integer
的数组。
我想访问那些在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]
答案 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 ....这样的数组。