Проблема с секвестированием вложенного запроса - подзапрос возвращает объект массива - PullRequest
0 голосов
/ 27 сентября 2018
const pEntries = await DB.models.pcPhoto.findAll({
    raw : true,
    attributes : ['filename'],
    where: {
        eid : { $in: await DB.models.entrySettings.findAll({
            attributes : ['id'],
            raw: true,
            where: {
                emplId : '99999'
            } 
        }) 
    }
}
});

Я получаю следующий результат из подзапроса [ {id: 801},{id: 802},.....{id:900} ]

. При выполнении запроса возникает ошибка

UnhandledPromiseRejectionWarning: Ошибка: недопустимоvalue {id: 968}

Как с этим справиться и получить единственный массив значений, чтобы запрос выполнялся гладко.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете сделать это в одном запросе, без использования подзапроса, но для этого вам нужно определить правильную ассоциацию ч / б, например, , и этохороший способ пойти

pcPhoto.hasMany(entrySettings , { foreignKey: 'eid' });

А потом просто запустить:

DB.models.pcPhoto.findAll({
    raw : true,
    attributes : [ 'id' , 'filename' , 'eid' ],
    include : {
        model : DB.models.entrySettings ,
        where : { emplId : '99999' } 
    }
});
0 голосов
/ 27 сентября 2018
const settings = await DB.models.entrySettings.findAll({
  attributes: ['id'],
  raw: true,
  where: { emplId : '99999' }
})

const eIds = settings.map(el => el.id)

const pEntries = await DB.models.pcPhoto.findAll({
  raw : true,
  attributes : ['filename'],
  where: {eid: {
    $in: eIds
  }}
}
...