Javascript 希望在Sequelize/Postgres DB查询中迭代JSON以查找匹配值

Javascript 希望在Sequelize/Postgres DB查询中迭代JSON以查找匹配值,javascript,json,node.js,postgresql,sequelize.js,Javascript,Json,Node.js,Postgresql,Sequelize.js,这是我在这里的第一篇帖子,所以请温柔一点。 我正在节点中使用Sequelize w/PostgresDB,并尝试使用findOrCreate通过电子邮件搜索联系人。电子邮件条目采用JSON格式(请参见下面的结构) 我想通过电子邮件找到联系人,并在JSON数组中迭代每个联系人条目的每个电子邮件地址 我在邮件有效载荷中传递了一个电子邮件地址和一个名字 如果我无法通过电子邮件找到联系人,我想创建一个新联系人(这部分很简单) //这就是我希望迭代的JSON的结构 [{ address

这是我在这里的第一篇帖子,所以请温柔一点。 我正在节点中使用Sequelize w/PostgresDB,并尝试使用findOrCreate通过电子邮件搜索联系人。电子邮件条目采用JSON格式(请参见下面的结构)

我想通过电子邮件找到联系人,并在JSON数组中迭代每个联系人条目的每个电子邮件地址

我在邮件有效载荷中传递了一个电子邮件地址和一个名字

如果我无法通过电子邮件找到联系人,我想创建一个新联系人(这部分很简单)

//这就是我希望迭代的JSON的结构

[{
          address: 'your.name@gmail.com',
          primary: true,
          rel: 'http://schemas.google.com/g/2005#home'
        },{
          address: 'work@work.com',
          primary: false,
          labels: ['work'],
        },{
          address: 'play@play.com',
          primary: false,
          labels: ['play'],
        }]

有什么想法吗?任何帮助都将不胜感激。谢谢

我会创建一个只包含电子邮件的数组,然后在中搜索
$

const emails = [{
      address: 'your.name@gmail.com',
      primary: true,
      rel: 'http://schemas.google.com/g/2005#home'
    },{
      address: 'work@work.com',
      primary: false,
      labels: ['work'],
    },{
      address: 'play@play.com',
      primary: false,
      labels: ['play'],
    }].map(email => email.address);
搜索:

Contacts.findOrCreate({
    where: {
      email: { $in: emails }
    },
    defaults: {
      name: req.body.name // 
    }
  })
  .then(response => {
    if (response[1] === true) {
      console.log('RESPONSE!!!', response[1])
    }
  });

关于
$in
的文档在这里:

我找到了一个很好的解决方案

首先,必须将数据值更改为类型:Sequelize.JSONB

然后您可以迭代嵌套的JSON对象和数组,如下所示:

 Contacts.findOne({
    where: {
      email: {
        $contains: [{
          address: req.body.email
        }]
      },
      UserId: req.user.id
    }
  })

**请注意,在$contains中,我将对象包装在一个数组中

非常感谢您的回复。非常感谢,我将试用代码,如果有效,请返回。。。
 Contacts.findOne({
    where: {
      email: {
        $contains: [{
          address: req.body.email
        }]
      },
      UserId: req.user.id
    }
  })