Выполните запрос один за другим (последовательность), используя две разные таблицы с Sequelize - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть две таблицы: одна для пользователя с именем пользователя, паролем и идентификатором, а другая для операций, выполняемых пользователями, с именем пользователя и файлом.Как только я получаю userId из сеанса, я делаю запрос в пользовательской таблице, чтобы узнать имя пользователя пользователей.После этого я беру имя пользователя и делаю запрос ко вторым табличным операциям, в которых я хотел бы получить имя файла для выбранного пользователя.

Я использую sequelize, и таблица не связана с первичным и внешним ключом, из-за того, что я не могу изменить структуру базы данных.Поэтому моя цель - выполнить запросы по порядку.Как только первый финиш, второй начинается.Я буду признателен за любую помощь.Большое спасибо.

 app.get("/dashboard", redirectLogin, (req, res) => {
 if (req.session.userId) {



 let  promise1= User.findOne({ where: { id: req.session.userId } })
 console.log('promise ' + promise1)

let userFound =  promise1.then(userFound =>{
    console.log( 'utente trovato 1 '+ userFound.username);


    Operations.findAll({where:{cliente:userFound.username}})
    .then(opFound => {
        console.log(opFound.filename); // return undefined
        return opFound.filename
        });

});



}
});

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Пожалуйста, попробуйте этот фрагмент.

app.get("/dashboard", redirectLogin, (req, res) => {
        if (req.session.userId) {
           return User.findOne({ where: { id: req.session.userId } })
           .then((user) => {
                return Operations.findAll({where:{cliente:user.username}})
           })
           .then((opFound) => {
                console.log(opFound.filename); // return undefined
                return opFound.filename
           })
        }
    });
0 голосов
/ 22 февраля 2019

вы можете использовать async / await для него, это также сократит количество строк кода.

 app.get("/dashboard", redirectLogin, async (req, res) => {  

 try {

    if (req.session.userId) {

      let userObj = await User.findOne({ where: { id: req.session.userId } })
      let opFound = await Operations.findAll({ where: { cliente: userObj.username } });
      console.log(opFound.filename)
      return opFound.filename;

          }  
    } catch (err) {
        return err;   
       } 
     });
...