Maison  >  Questions et réponses  >  le corps du texte

Comment puis-je exécuter cette requête dans Sequelize

<p><pre class="brush:php;toolbar:false;">SELECT * DE article_master WHERE project_id IN (SELECT id FROM project_master OÙ workspace_id dans (SELECT id FROM workspace_master OÙ company_id = 4));</pre> <p>Comment exécuter cette requête mysql dans sequelize - Node js sans utiliser la requête originale ? </p>
P粉354602955P粉354602955411 Il y a quelques jours446

répondre à tous(2)je répondrai

  • P粉245003607

    P粉2450036072023-09-06 00:38:24

    Si la structure de votre modèle est similaire à item_master 有许多 project_master,并且 project_master 有许多 workspace_master,那么以下sequelize查询将与async/awaitPostulez ensemble.

    Au fur et à mesure que je modifie ma réponse. Comme vous l'avez dit dans vos commentaires, vous avez votre structure de modèle, par exemple, l'espace de travail comporte de nombreux projets, le projet comporte de nombreux projets. La requête Sequelize ressemblera alors à :

    const getResult = async (workpace_id, company_id = 4) => {
          const result = await workspace_master.findAll({
          subQuery: false,
          include: [
            {
              model: project_master,
              as: 'project_masters', // this is your alias defined in model
              attributes: ['id','foo','bar'],
              include: [
                {
                  model: item_master,
                  as: 'item_masters', // this is your alias defined in model
                  attributes: ['id','foo','bar']
                }
              ]
            }
          ],
          where: {
             id: workspace_id,
             company_id: company_id
          }
        });
        
        if(!result || !result.length) return res.send('Something went wrong!');
        return res.send(result);
       }

    Essayez-le maintenant, j'espère que cela résoudra votre problème.

    répondre
    0
  • P粉300541798

    P粉3005417982023-09-06 00:00:17

    const item = await Item.findAll({
        where: {
            status: { [Op.ne]: 99 },
            '$project.workspace.company_id$': { [Op.eq]: req.user.companyId }
        },
        include: {
            model: Project,
            as: 'project',
            attributes: ['id'],
            include: {
                model: Workspace,
                as: 'workspace',
                attributes: ['id', 'companyId'],
                where: {
                    companyId: req.user.companyId
                },
            },
        }
    })

    Cela fonctionne comme je le souhaite.

    répondre
    0
  • Annulerrépondre