Ich erstelle eine Web-App mit Sequelize, um eine Verbindung zu einer Postgres-Datenbank herzustellen. Ich habe es mir selbst beigebracht, wie man hasMany und androsesTo benutzt, um Daten aufzurufen, zu erstellen und zu vernichten. Ich habe Probleme mit "goesToMany".Wie benutzt man "goesToMany" in Sequelize?
In meinem Server versuche ich eine Reise zu erstellen, die zu vielen Benutzern als Fahrer gehört und eine Assoziation für Benutzer gehörige zu meiner Reise hinzufügt. Ich möchte in der Lage sein, eine Reise bei einer POST-Anfrage zu erstellen, kann aber nicht herausfinden, wie ich die IDs aufrufen soll.
///// MODELS trip.js
module.exports = function(sequelize, DataTypes) {
var Trip = sequelize.define("Trip", {
driverStart: DataTypes.STRING,
driverEnd: DataTypes.STRING,
riderStarts: DataTypes.ARRAY(DataTypes.STRING),
riderEnds: DataTypes.ARRAY(DataTypes.STRING),
tripDate: DataTypes.DATE,
tripHour: DataTypes.INTEGER,
availableSeats: DataTypes.INTEGER,
price: DataTypes.INTEGER,
tripIsActive: DataTypes.BOOLEAN
});
Trip.associate = function(models) {
Trip.hasMany(models.User, {
through: "riders_on_trip",
as: "riders",
onDelete: "CASCADE",
foreignKey: "riderIds"
});
Trip.belongsTo(models.User, {
as: "driver",
onDelete: "CASCADE",
foreignKey: "driverId"
});
};
return Trip;
};
user.js
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define("User", {
email: DataTypes.STRING,
password: DataTypes.STRING,
profileImgUrl: DataTypes.STRING,
fName: DataTypes.STRING,
lName: DataTypes.STRING,
yearOfBirth: DataTypes.INTEGER,
gender: DataTypes.STRING,
ratings: {
type: DataTypes.ARRAY(DataTypes.INTEGER),
defaultValue: [5]
},
onTrip: {
type: DataTypes.BOOLEAN,
defaultValue: false
},
createdAt: {
type: DataTypes.DATE,
defaultValue: sequelize.literal('NOW()')
},
updatedAt: {
type: DataTypes.DATE,
defaultValue: sequelize.literal('NOW()')
}
});
User.associate = function(models) {
User.hasMany(models.RideRequest, {
onDelete: "CASCADE",
foreignKey: "riderId"
});
User.hasMany(models.DriveRequest, {
onDelete: "CASCADE",
foreignKey: "driverId"
});
User.hasMany(models.Notification, {
as: 'sender',
onDelete: "CASCADE",
foreignKey: "senderId"
});
User.hasMany(models.Notification, {
as: 'receiver',
onDelete: "CASCADE",
foreignKey: "receiverId"
});
User.belongsToMany(models.Trip, {
as: "riders",
through: "riders_on_trip",
onDelete: "CASCADE",
foreignKey: "riderIds"
});
User.hasMany(models.Trip, {
as: "driver",
onDelete: "CASCADE",
foreignKey: "driverId"
});
};
return User;
};
///// Controller
trip.js
create: function create(req,res) {
// var decodedIds = req.params.riderIds.split("-");
var decoded = jwt.decode(req.query.token);
// console.log(decodedIds + '------------------ DECODED IDS ----------------');
model.User.set
return model.Trip.create({
driverStart: req.body.driverStart,
driverEnd: req.body.driverEnd,
riderStarts: req.body.riderStarts,
riderEnds: req.body.riderEnds,
tripDate: req.body.tripDate,
tripHour: req.body.tripHour,
availableSeats: req.body.availableSeats,
price: req.body.price,
tripIsActive: req.body.tripIsActive,
driverId: req.params.driverId,
riders: [{riderIds: 2}, {riderIds: 2}, {riderIds: 3}]
}).then(function (trip) {
console.log(trip.riderIds + '------------ RIDER IDS ---------------');
return res.status(201).json({
message: 'Trip created successfully',
obj: trip
});
}).catch(function (err) {
return res.status(400).json({
title: 'Error occured while creating trip',
error: err
});
});
},
Gibt es irgendwelche maste Programmieren, wer könnte mir eine kurze Erklärung geben, wie ich eine Reise mit dieser Art von Assoziation in Sequelize schaffen könnte?