Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter dados de outra tabela usando dados de coluna de uma tabela diferente?


Você deve criar um modelo como este

api/models/Email.js
attributes: {
    email : {
        type: 'email',
        unique: true
    },
    owner : {
        model:'user',  //here put your model name 
        unique: true   //put unique here because it's one by one association
   }
}

api/models/User.js
attributes: {
   username : {
     type: 'string',
     unique: true
   },
   userEmail : {
      collection:'email', //here is also model name
      via: 'owner'
   }
}

Então

Obter usuário do e-mail
Email.find().populate('owner')

Obter e-mail do usuário
User.find().populate('userEmail')

Agora você pode acessar seus dados tanto do seu modelo dois.

Tente imprimir dois comandos acima, você verá que seus dados contêm os dados da tabela relacionada.
Email.find().populate('owner').exec(function(err, records) {
    res.json(records)
});

Esta é a minha resposta.
[
    {
        "owner": {
            "username": "test",
            "id": 1,
            "createdAt": "2016-11-23T13:45:06.000Z",
            "updatedAt": "2016-11-23T13:45:06.000Z"
        },
        "email": "[email protected]",
        "id": 1,
        "createdAt": "2016-11-23T13:45:06.000Z",
        "updatedAt": "2016-11-23T13:45:06.000Z"
    }
]

Mais informações:http://sailsjs.com/ documentação/conceitos/modelos-e-orm/associações/um para um