Как я могу выбрать на основе свойства типа массива модели сиквелизации? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть запрос getAll, который возвращает

[ { id: 1,
    title: 'Fill me in',
    assignees:
     [ 'abc@gmail.com',
       'curioscat54@gmail.com',
       'davidol@gmail.com' ],
    is_completed: null,
    userId: 1,
    created_by: 'don gee',
    createdAt: 2020-05-06T10:49:32.712Z,
    updatedAt: 2020-05-06T10:49:32.712Z },
  { id: 2,
    title: 'Fill me in',
    assignees:
     [ 'qed@gmail.com',
       'curioscat54@gmail.com',
       'orekbajk@gmail.com' ],
    is_completed: null,
    userId: 1,
    created_by: 'don gee',
    createdAt: 2020-05-06T10:52:53.438Z,
    updatedAt: 2020-05-06T10:52:53.438Z } ]

Assignees - это тип данных массива. Как я могу указать предложение where, чтобы возвращать только те результаты, где исполнители равны конкретному адресу электронной почты, например, где assignees = 'abc@gmail.com'?

Таким образом, он должен возвращать только те экземпляры, где у исполнителей есть 'abc@gmail.com' .

[ { id: 1,
    title: 'Fill me in',
    assignees:
     [ 'abc@gmail.com',
       'curioscat54@gmail.com',
       'davidol@gmail.com' ],
    is_completed: null,
    userId: 1,
    created_by: 'don gee',
    createdAt: 2020-05-06T10:49:32.712Z,
    updatedAt: 2020-05-06T10:49:32.712Z },
   ]

Это то, что я пробовал:

async getAll(req, res){
    let val;
    try{
    val = await model.Matter.findAll({ 
        where: { 
            assignees:{
                [sequelize.Op.in]: ['curioscat54@gmail.com']
        }
    }
}); 
    return res.status(200).json({
        val
    });
} catch(err){
    return res.status(500).json({
        err:err.message
    })
}
}

Но я получаю эту ошибку values.map is not a function

1 Ответ

1 голос
/ 06 мая 2020

Мне удалось решить эту проблему, изменив sequelize.Op.in на sequelize.Op.contains

async getAll(req, res){
    let val;
    try{
    val = await model.Matter.findAll({ 
        where: { 
            assignees:{
                [sequelize.Op.contains]: ['curioscat54@gmail.com']
        }
    }
}); 
    return res.status(200).json({
        val
    });
} catch(err){
    return res.status(500).json({
        err:err.message
    })
}
}
...