繁体   English   中英

Sequelize:查询字符串在字符串数组postgresql中

[英]Sequelize: where query string is in array of strings postgresql

我正在尝试按sequelize执行查询,在此我只希望获得具有正确角色的用户。 角色存储为字符串数组。 例如['student']['school_owner', 'admin']

在这种情况下,我实际上是在尝试建立一所学校,并包括该学校的学校所有者。 失败的相关查询是

const ownerQuery: { [key: string]: any } = {};
ownerQuery.roles = {$in: ["{school_owner}"]};

School
  .findById(req.params.id,{include: [{ model: User, where: ownerQuery }]})
  .then((school: School | null) => {
    if (school === null) {
      res.status(404).json({message: "Not Found"})
    } else {
      res.json(school)
    }
  }, (error) => next(error))

sequelize将数组值存储为{school_owner, admin}类的东西。 文档说,我可以在$in查询中使用以下内容

ownerQuery.roles = {$in: ["school_owner"]};

它删除了{}但它给了我一个Array value must start with "{" or dimension information.' 错误。

在第一个示例中,查询不会失败,但也不会像$in查询那样工作。 我必须完全匹配roles的内容。 例如,如果用户同时具有adminschool_owner角色,我必须说

ownerQuery.roles = {$in: ["{school_owner, admin}"]};

什么是执行$in查询的正确方法,以便我可以匹配具有特定角色的所有用户?

实现此功能的正确方法是执行以下操作

ownerQuery.roles = { $contains: ["school_owner"] };

这将返回所有在其roles数组中具有school_owner roles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM