【发布时间】:2021-07-03 15:04:16
【问题描述】:
这是我在 toWatch-model.js 文件中的 ToWatch 模型,它在代码中具有 UserModel->ToWatch 1:1 关系并且具有 ToWatch->MovieModel 1:M 关系。
const Sequelize = require('sequelize');
const sequelize = require('./../common/db-config');
const MovieModel = require ("./movie-model");
const UserModel = require("./user-model");
const Model = Sequelize.Model;
class ToWatch extends Model{}
ToWatch.init({
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
field: 'id_towatch'
},
date: {
type: Sequelize.DATE,
allowNull: false,
field: 'date'
},
userId: {
type: Sequelize.INTEGER,
allowNull: false,
field: 'id_user',
references:{
model: UserModel,
key: "id"
}
},
movieId: {
type: Sequelize.INTEGER,
allowNull: false,
field: 'movie_id_towatch',
references:{
model: MovieModel,
key: "id"
}
},
},
{
sequelize,
modelName: 'towatch',
tableName: 'towatch',
timestamps: false
// options
});
//Here is the relation ************
UserModel.hasOne(ToWatch, {
foreignKey: {
type:Sequelize.DataTypes.INTEGER,
allowNull:false,
name:'fk_foreign_key_towatch'
}
});
ToWatch.belongsTo(UserModel);
ToWatch.hasMany(MovieModel, {
foreignKey: {
type:Sequelize.DataTypes.INTEGER,
allowNull:false,
name:'movie_id_towatch'
}
});
MovieModel.belongsTo(ToWatch);
module.exports = ToWatch;
我看了很多教程,但是我第一次尝试创建一个方法来返回所有内容,包括通过 ID 从我的其他表中返回的内容,我不确定在哪里放置以及如何在这个方法中放置我需要的数据,考虑到它有.then(data=>res.send)。教程通过获取或使用 async-await 以其他方式进行操作,甚至文档在这里也没有帮助我。有人可以告诉我在这个方法里面放什么以及在哪里,在 toWatch-controller.js 文件里面,让我能够看到让我们说所有电影数据(标题,img,日期),作为我认为的数组getToWatch 方法。
const ToWatch = require('./../models/toWatch-model');
module.exports.getToWatch = (req,res) => {
ToWatch.findAll().then(toWatch => {
[WHAT DO I PUT HERE?]
res.send(toWatch);
}).catch(err => {
res.send({
status: -1,
error:err
})
})
}
我需要这样的 ToWatch{ 红色, 电影院:“电影广场”, movieId{title:"Anabel", img:"URL", date:1999.02.23}
【问题讨论】:
标签: javascript node.js sequelize.js associations