У меня есть приложение для инвентаризации, которому требуется возможность поиска по большому набору данных SQL по требованию (65 тыс. Записей). Сегодня я столкнулся с проблемой при использовании параметра включения. Вот как это выглядит:
//Get all records for passed search term
router.get('/getSearchData', function(req,res,next){
models.assets.findAll({
attributes: [
'Owner', 'Barcode', 'SerialNum', 'Model', 'Last_Seen_Date', 'OrderNum',
'Item_Status', 'Equipment_Type', 'Comments', 'AssignedLevel', 'Acquired_Date',
'Issued_Date', 'Warranty_Exp_Date', 'Surplus_Date'
],
where: {
[Op.or]: [
{ Owner: { [Op.like]: '%'+req.query.string+'%'} },
{ Barcode: { [Op.like]: '%'+req.query.string+'%'} },
{ SerialNum: { [Op.like]: '%'+req.query.string+'%'} },
{ Model: { [Op.like]: '%'+req.query.string+'%'} },
{ Last_Seen_Date: { [Op.like]: '%'+req.query.string+'%'} },
{ OrderNum: { [Op.like]: '%'+req.query.string+'%'} },
{ Item_Status: { [Op.like]: '%'+req.query.string+'%'} },
{ Equipment_Type: { [Op.like]: '%'+req.query.string+'%'} },
{ Comments: { [Op.like]: '%'+req.query.string+'%'} },
{ AssignedLevel: { [Op.like]: '%'+req.query.string+'%'} },
{ Acquired_Date: { [Op.like]: '%'+req.query.string+'%'} },
{ Issued_Date: { [Op.like]: '%'+req.query.string+'%'} },
{ Warranty_Exp_Date: { [Op.like]: '%'+req.query.string+'%'} },
{ Surplus_Date: { [Op.like]: '%'+req.query.string+'%'} }
]
},
include: [
{ model: models.contacts, as: 'contacts',
where: {
[Op.or]: [
{ Alias: { [Op.like]: '%'+req.query.string+'%'} },
{ Last_Name: { [Op.like]: '%'+req.query.string+'%'} }
]
}
}
],
order: [ [ 'Barcode', 'desc' ] ]
}).then( response => { res.send(response);
}).catch(error => { return next(error)});
});
Наше приложение инвентаризации настроено на отображение данных о конкретном активе, а затем привязывает их к таблице контактов, содержащей информацию о владельце актива. Здесь я пытаюсь вернуть результаты, соответствующие поисковому запросу пользователей, в обеих таблицах.
У меня правильно настроены ассоциации, так как я использую очень похожий маршрут для заполнения нефильтрованной таблицы.
Я обдумываю это? Или я упустил что-то простое? Любой вклад будет оценен:)