folgende Modelle vor:Abfrage Verknüpfungstabelle beiden Verbände in Sequelize ohne sie
var User = sequelize.define('User', {
_id:{
type: Datatypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
name: Datatypes.STRING,
email:{
type: Datatypes.STRING,
unique: {
msg: 'Email Taken'
},
validate: {
isEmail: true
}
}
});
var Location= sequelize.define('Location', {
_id:{
type: Datatypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
name: Datatypes.STRING,
address: type: Datatypes.STRING
});
Location.belongsToMany(User, {through: 'UserLocation'});
User.belongsToMany(Location, {through: 'UserLocation'});
Gibt es eine Möglichkeit, die UserLocation
Tabelle für ein bestimmtes UserId
abfragen und die entsprechenden Locations
zu erhalten. Etwas wie:
SELECT * FROM Locations AS l INNER JOIN UserLocation AS ul ON ul.LocationId = l._id WHERE ul.UserId = 8
Von dem, was ich finden kann man etwas Ähnliches tun:
Location.findAll({
include: [{
model: User,
where: {
_id: req.user._id
}
}]
}).then(loc => {
console.log(loc);
});
Doch diese gibt die Locations
, UserLocation
Kreuzungen und User
die es schließt sich der User
Tisch wenn ich keine Benutzerinformationen benötige und ich nur die Locations
für diesen Benutzer benötige. Was ich getan habe, ist zu arbeiten, jedoch wird die Abfrage gegen die Junction-Tabelle anstelle der Suche in der User
Tabelle bevorzugt.
Ich hoffe, das ist klar. Danke im Voraus.
bearbeiten
Ich landete tatsächlich auf diese in einer anderen Art und Weise umzusetzen. Ich werde dies jedoch weiterhin als Frage stellen, weil dies möglich sein sollte.
Können Sie angeben, wie Sie die Tabelle 'UserLocation' verwenden würden, um genau die Abfrage zu erstellen, nach der das OP fragt? Vielen Dank. – alecxe
Ich konnte es jetzt nicht versuchen, weil ich das Projekt hier nicht leben sequelize. Aber ich bin mir ziemlich sicher, dass Sie die Junction-Tabelle wie jede andere Tabelle verwenden können, ohne die Definition der Beziehungen zu beeinträchtigen. Im schlimmsten Fall können Sie explizit Fremdschlüsselspalten in UserLocation angeben, aber ich nehme an, dass sie in der Klasse durch Sequelized definiert sind. (Ähnlich wie ID-Spalte, automatisch deklariert, aber wenn Sie es redeclare explizit nothihng passiert) Und danach sollten Sie in der Lage sein, UserLocation als grundlegende Fremdschlüssel und konstruieren Abfrage auf die gleiche Weise. – farincz
Dies erlaubt Ihnen immer noch nicht, einer der Assoziationsentitäten mit der Junction-Tabelle ohne die andere Assoziationsentität beizutreten. – jony89