0
我正在創建一個使用sequelize連接到postgres數據庫的web應用程序。我設法教自己如何使用hasMany和belongsTo來調用,創建和銷燬數據。我與belongsToMany有問題。如何在Sequelize中使用belongsToMany?
在我的服務器中,我嘗試創建一個屬於許多用戶的旅程,併爲用戶belongsToMany Trip添加了關聯作爲騎手。我希望能夠在POST請求上創建旅程,但無法弄清楚如何調用Id。
/////模型 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;
};
/////控制器
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
});
});
},
有沒有maste編程誰可以給我一個簡單的解釋,我怎麼可以創建一個這種類型的關聯在旅程中的旅程?