首页 > 解决方案 > 使用带有 Sequelize 的两个不同表一个接一个地运行查询(序列)

问题描述

我有两张表,一张用于用户名、密码和 id,另一张用于用户进行的操作,包括用户名和文件。从 session 获取 userId 后,我会在 user 表中进行查询以了解用户的用户名。之后,我使用用户名并查询第二个表操作,我想在其中检索所选用户的文件名。

我使用 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
        });

});



}
});

标签: javascriptnode.jspostgresqlpromisesequelize.js

解决方案


你可以使用异步/等待它,它也会减少你的代码行。

 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;   
       } 
     });

推荐阅读